summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS10
-rw-r--r--classes/cmake.bbclass7
-rw-r--r--classes/concatenated-image.bbclass38
-rw-r--r--classes/insane.bbclass5
-rw-r--r--classes/java-library.bbclass37
-rw-r--r--classes/java.bbclass62
-rw-r--r--classes/module-base.bbclass4
-rw-r--r--classes/module.bbclass3
-rw-r--r--classes/sanity.bbclass3
-rw-r--r--classes/sdl.bbclass36
-rw-r--r--conf/distro/angstrom-2008.1.conf28
-rw-r--r--conf/distro/include/angstrom-2007-preferred-versions.inc5
-rw-r--r--conf/distro/include/angstrom.inc1
-rw-r--r--conf/distro/include/moko-autorev.inc1
-rw-r--r--conf/distro/include/sane-srcdates.inc6
-rw-r--r--conf/distro/include/sane-srcrevs.inc9
-rw-r--r--conf/distro/openmoko.conf8
-rw-r--r--conf/distro/openprotium.conf101
-rw-r--r--conf/distro/openwrt-sdk.conf5
-rw-r--r--conf/machine/chumby.conf26
-rw-r--r--conf/machine/collie.conf12
-rw-r--r--conf/machine/fic-gta01.conf3
-rw-r--r--conf/machine/fic-gta02.conf9
-rw-r--r--conf/machine/h3600.conf2
-rw-r--r--conf/machine/htcalpine.conf2
-rw-r--r--conf/machine/htcapache.conf2
-rw-r--r--conf/machine/htcblueangel.conf2
-rw-r--r--conf/machine/htchimalaya.conf2
-rw-r--r--conf/machine/htcsable.conf2
-rw-r--r--conf/machine/htctornado.conf2
-rw-r--r--conf/machine/htcwallaby.conf2
-rw-r--r--conf/machine/include/collie-2.6.inc33
-rw-r--r--conf/machine/include/ixp4xx.inc2
-rw-r--r--conf/machine/include/motorola-ezx-base.inc4
-rw-r--r--conf/machine/include/poodle-2.6.inc1
-rw-r--r--conf/machine/include/qemu.inc1
-rw-r--r--conf/machine/include/tune-strongarm.inc2
-rw-r--r--conf/machine/include/tune-strongarm1100.inc5
-rw-r--r--conf/machine/include/zaurus-2.6.inc14
-rw-r--r--conf/machine/include/zaurus-clamshell.inc3
-rw-r--r--conf/machine/jornada56x.conf2
-rw-r--r--conf/machine/jornada7xx.conf2
-rw-r--r--conf/machine/mx31moboard.conf33
-rw-r--r--conf/machine/nokia770.conf2
-rw-r--r--conf/machine/nokia800.conf2
-rw-r--r--conf/machine/shark.conf2
-rw-r--r--conf/machine/simpad.conf2
-rw-r--r--conf/machine/storcenter.conf26
-rwxr-xr-xcontrib/angstrom/build-feeds.sh26
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/.mtn2git_empty (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/.mtn2git_empty)0
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/debian/.mtn2git_empty (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/.mtn2git_empty)0
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/debian/changelog (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/changelog)7
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/debian/compat (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/compat)0
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/debian/control (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/control)2
-rw-r--r--contrib/distro-packages/debian/openembedded-essential-1.3/debian/copyright (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/copyright)0
-rwxr-xr-xcontrib/distro-packages/debian/openembedded-essential-1.3/debian/rules (renamed from contrib/distro-packages/debian/openembedded-essential-1.2/debian/rules)0
-rwxr-xr-xcontrib/mtn2git/mtn2git.py402
-rwxr-xr-xcontrib/python/generate-manifest-2.5.py2
-rw-r--r--delete.txt27
-rw-r--r--files/device_table-minimal-add-md.txt32
-rw-r--r--packages/agg/agg_2.5.bb11
-rw-r--r--packages/alsa/alsa-state.bb6
-rw-r--r--packages/alsa/alsa-state/fic-gta02/.mtn2git_empty (renamed from packages/gnutls/gnutls/.mtn2git_empty)0
-rw-r--r--packages/alsa/alsa-state/fic-gta02/asound.state875
-rw-r--r--packages/alsa/alsa-state/fic-gta02/stereoout.state875
-rw-r--r--packages/apmd/apmd-3.2.2/90-wifi-off12
-rw-r--r--packages/apmd/apmd_3.2.2.bb4
-rw-r--r--packages/asterisk/asterisk-1.4.17/.mtn2git_empty (renamed from packages/jamvm/jamvm-1.3.0/.mtn2git_empty)0
-rw-r--r--packages/asterisk/asterisk-1.4.17/Makefile.patch20
-rw-r--r--packages/asterisk/asterisk-1.4.17/init77
-rw-r--r--packages/asterisk/asterisk-1.4.17/logrotate12
-rw-r--r--packages/asterisk/asterisk-1.4.17/sounds.xml.patch18
-rw-r--r--packages/asterisk/asterisk-1.4.17/volatiles7
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb46
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb46
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb48
-rw-r--r--packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb46
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb37
-rw-r--r--packages/asterisk/asterisk-moh-freeplay-alaw_0.0.0.bb22
-rw-r--r--packages/asterisk/asterisk-moh-freeplay-g729_0.0.0.bb20
-rw-r--r--packages/asterisk/asterisk-moh-freeplay-gsm_0.0.0.bb20
-rw-r--r--packages/asterisk/asterisk-moh-freeplay-ulaw_0.0.0.bb22
-rw-r--r--packages/asterisk/asterisk_1.4.17.bb171
-rw-r--r--packages/atk/atk.inc9
-rw-r--r--packages/atk/atk_1.18.0.bb8
-rw-r--r--packages/atk/atk_1.19.3.bb10
-rw-r--r--packages/atk/atk_1.20.0.bb12
-rw-r--r--packages/avetanabt/avetanabt_20060413.bb5
-rw-r--r--packages/avetanabt/avetanabt_cvs.bb5
-rw-r--r--packages/base-files/base-files/openprotium/.mtn2git_empty (renamed from packages/jamvm/jamvm/.mtn2git_empty)0
-rw-r--r--packages/base-files/base-files/openprotium/fstab11
-rw-r--r--packages/cacao/cacao-cldc.inc64
-rw-r--r--packages/cacao/cacao-cldc_0.98.bb42
-rw-r--r--packages/cacao/cacao-initial_0.98.bb34
-rw-r--r--packages/cacao/cacao-native.inc27
-rw-r--r--packages/cacao/cacao-native_0.98+hg20071001.bb5
-rw-r--r--packages/cacao/cacao.inc52
-rw-r--r--packages/cacao/cacao_0.98+hg20071001.bb22
-rw-r--r--packages/cacao/cacaoh-cldc-native_0.98.bb25
-rw-r--r--packages/cacao/cacaoh-native.inc27
-rw-r--r--packages/cacao/cacaoh-native_0.98+hg20071001.bb5
-rw-r--r--packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch50
-rw-r--r--packages/cacao/files/cacao-0.98+hg-attachthread.patch89
-rw-r--r--packages/cacao/files/cacao-0.98+svn-classpath_var.patch56
-rw-r--r--packages/cacao/files/cacao-0.98+svn-libdir.diff30
-rw-r--r--packages/cacao/files/cacao-0.98-initial.patch45
-rw-r--r--packages/classpath/classpath-initial_0.93.bb28
-rw-r--r--packages/classpath/classpath-minimal_0.96.1.bb17
-rw-r--r--packages/classpath/classpath-native.inc32
-rw-r--r--packages/classpath/classpath-native_0.96.1.bb6
-rw-r--r--packages/classpath/classpath.inc60
-rw-r--r--packages/classpath/classpath_0.95.bb20
-rw-r--r--packages/classpath/classpath_0.96.1.bb20
-rw-r--r--packages/classpath/files/gjar-prefix-patch.diff40
-rw-r--r--packages/dtnrg/.mtn2git_empty (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/.mtn2git_empty)0
-rw-r--r--packages/dtnrg/dtn_2.5.0.bb67
-rw-r--r--packages/e17/edje-viewer/.mtn2git_empty (renamed from packages/quilt/quilt-0.39/.mtn2git_empty)0
-rw-r--r--packages/e17/edje-viewer/no-minimal-size.patch27
-rw-r--r--packages/e17/edje-viewer_cvs.bb5
-rw-r--r--packages/e17/enna_cvs.bb (renamed from packages/e17/enna_svn.bb)5
-rw-r--r--packages/ecj/ecj-bootstrap-native_3.3.bb38
-rw-r--r--packages/ecj/ecj-initial_3.3.bb84
-rw-r--r--packages/ecj/ecj-native_3.2.2.bb17
-rw-r--r--packages/ecj/ecj-native_3.3.bb17
-rwxr-xr-xpackages/ecj/files/ecj.in1
-rw-r--r--packages/ecj/files/ecj.sh3
-rw-r--r--packages/efl1/ecore-native_cvs.bb2
-rw-r--r--packages/efl1/ecore.inc12
-rw-r--r--packages/efl1/ecore_cvs.bb5
-rw-r--r--packages/efl1/edbus_cvs.bb10
-rw-r--r--packages/efl1/epdf_cvs.bb6
-rw-r--r--packages/efl1/evas.inc2
-rw-r--r--packages/efl1/evas_cvs.bb3
-rw-r--r--packages/freesmartphone/.mtn2git_empty (renamed from packages/roadmap/roadmap-gtk2-1.0.12/.mtn2git_empty)0
-rw-r--r--packages/freesmartphone/gsm0710muxd_svn.bb14
-rw-r--r--packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch30
-rw-r--r--packages/gcc/gcc-4.2.2/fortran-static-linking.patch48
-rw-r--r--packages/gcc/gcc-4.2.2/gcc-4.0.2-e300c2c3.patch311
-rw-r--r--packages/gcc/gcc-cross-sdk_4.2.2.bb21
-rw-r--r--packages/gcc/gcc-cross_4.2.2.bb2
-rw-r--r--packages/gcc/gcc_4.2.2.bb12
-rw-r--r--packages/gnutls/gnutls-1.6.3/.mtn2git_empty (renamed from packages/roadmap/zroadmap-1.0.12/.mtn2git_empty)0
-rw-r--r--packages/gnutls/gnutls-1.6.3/configure_madness.patch (renamed from packages/gnutls/gnutls/configure_madness.patch)0
-rw-r--r--packages/gnutls/gnutls-1.6.3/gnutls-openssl.patch (renamed from packages/gnutls/gnutls/gnutls-openssl.patch)0
-rw-r--r--packages/gnutls/gnutls-1.6.3/gnutls-texinfo-euro.patch (renamed from packages/gnutls/gnutls/gnutls-texinfo-euro.patch)0
-rw-r--r--packages/gnutls/gnutls.inc5
-rw-r--r--packages/gnutls/gnutls_1.6.3.bb7
-rw-r--r--packages/gpe-scap/gpe-scap-1.3/.mtn2git_empty0
-rw-r--r--packages/gpe-scap/gpe-scap-1.3/allow-glade-2.4.0.patch26
-rw-r--r--packages/gpe-scap/gpe-scap_1.3.bb2
-rw-r--r--packages/gpe-session-scripts/files/angstrom/matchbox-session8
-rw-r--r--packages/gpe-session-scripts/files/matchbox-session8
-rw-r--r--packages/gpe-session-scripts/gpe-session-scripts_0.67.bb2
-rw-r--r--packages/gpephone/addressbook_svn.bb2
-rw-r--r--packages/gpephone/almmgrd_svn.bb15
-rw-r--r--packages/gpephone/calendar2_svn.bb16
-rw-r--r--packages/gpephone/contact_svn.bb2
-rw-r--r--packages/gpephone/dialer_svn.bb20
-rw-r--r--packages/gpephone/firewall_svn.bb2
-rw-r--r--packages/gpephone/gpe-applauncher_svn.bb2
-rw-r--r--packages/gpephone/libabenabler2_svn.bb6
-rw-r--r--packages/gpephone/libabenabler_svn.bb2
-rw-r--r--packages/gpephone/libalmmgr_svn.bb17
-rw-r--r--packages/gpephone/libcalenabler2_svn.bb11
-rw-r--r--packages/gpephone/libgemwidget_svn.bb19
-rw-r--r--packages/gpephone/libiac2/.mtn2git_empty0
-rw-r--r--packages/gpephone/libiac2/disable-tests.patch25
-rw-r--r--packages/gpephone/libiac2_svn.bb20
-rw-r--r--packages/gpephone/libiac_svn.bb17
-rw-r--r--packages/gpephone/libim2/.mtn2git_empty0
-rw-r--r--packages/gpephone/libim2/disable-tests.patch11
-rw-r--r--packages/gpephone/libim2_svn.bb22
-rw-r--r--packages/gpephone/liblipsevent2_svn.bb17
-rw-r--r--packages/gpephone/libmsgenabler2_svn.bb23
-rw-r--r--packages/gpephone/libmsgenabler_1.0.bb4
-rw-r--r--packages/gpephone/libmsgenabler_svn.bb21
-rw-r--r--packages/gpephone/librecord2_svn.bb2
-rw-r--r--packages/gpephone/libsettings_svn.bb2
-rw-r--r--packages/gpephone/machined_svn.bb2
-rw-r--r--packages/gpephone/ptim-engine_svn.bb2
-rw-r--r--packages/gpephone/ptim-headers_svn.bb2
-rw-r--r--packages/gpephone/ptim-helper_svn.bb2
-rw-r--r--packages/gpephone/ptim-manager_svn.bb2
-rw-r--r--packages/gpephone/quickdial_svn.bb5
-rw-r--r--packages/gpephone/useen_svn.bb2
-rw-r--r--packages/gpsdrive/gpsdrive-pda/.mtn2git_empty0
-rw-r--r--packages/gpsdrive/gpsdrive-pda/makefile.patch16
-rw-r--r--packages/gpsdrive/gpsdrive-pda_2.10pre2.bb34
-rw-r--r--packages/gsm/files/stdint.patch17
-rw-r--r--packages/gsm/libgsmd-lips_svn.bb15
-rw-r--r--packages/gtk+/gtk+-2.10.14/small-gtkfilechooser.patch222
-rw-r--r--packages/gtk+/gtk+_2.10.14.bb3
-rw-r--r--packages/hal/hal_0.5.9.bb12
-rw-r--r--packages/imagemagick/imagemagick-native_6.3.5-10.bb3
-rw-r--r--packages/images/openmoko-python-devel-image.bb6
-rw-r--r--packages/images/openprotium-image.bb134
-rw-r--r--packages/images/opie-image-16mb.bb45
-rw-r--r--packages/images/opie-image.bb47
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/checkroot.sh2
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/mountall.sh27
-rwxr-xr-xpackages/initscripts/initscripts-1.0/openprotium/umountfs27
-rw-r--r--packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh11
-rw-r--r--packages/initscripts/initscripts-openprotium_1.0.bb16
-rw-r--r--packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb2
-rw-r--r--packages/jamvm/files/.mtn2git_empty0
-rw-r--r--packages/jamvm/files/jamvm-1.3.1-size-defaults.patch (renamed from packages/jamvm/jamvm/jamvm-1.3.1-size-defaults.patch)0
-rw-r--r--packages/jamvm/files/jamvm_1.5.0-initial.patch82
-rw-r--r--packages/jamvm/jamvm-initial_1.5.0.bb36
-rw-r--r--packages/jamvm/jamvm.inc22
-rw-r--r--packages/jamvm/jamvm/sh3sh4-support.patch11
-rw-r--r--packages/jamvm/jamvm_1.4.5.bb24
-rw-r--r--packages/jamvm/jamvm_1.5.0.bb5
-rw-r--r--packages/jikes/jikes-initial.bb23
-rw-r--r--packages/jikes/jikes-native_1.21.bb1
-rw-r--r--packages/kaffe/kaffe.inc2
-rw-r--r--packages/libsdl/libsdl-mixer_1.2.6.bb6
-rw-r--r--packages/libtool/libtool-1.5.6/.mtn2git_empty0
-rw-r--r--packages/libtool/libtool-1.5.6/autotools.patch127
-rw-r--r--packages/libtool/libtool_1.5.6.bb38
-rw-r--r--packages/linux/chumby-kernel/.mtn2git_empty0
-rw-r--r--packages/linux/chumby-kernel/defconfig1248
-rw-r--r--packages/linux/chumby-kernel_2.6.16-chumby-1.2.bb37
-rw-r--r--packages/linux/linux-2.6.22.6/mx31moboard/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.22.6/mx31moboard/defconfig1492
-rw-r--r--packages/linux/linux-2.6.23/kallsyms-missing-include.patch19
-rw-r--r--packages/linux/linux-ixp4xx/defconfig-2.6.23.14 (renamed from packages/linux/linux-ixp4xx/defconfig-2.6.23.12)0
-rw-r--r--packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.23.141940
-rw-r--r--packages/linux/linux-ixp4xx_2.6.23.14.bb (renamed from packages/linux/linux-ixp4xx_2.6.23.12.bb)6
-rw-r--r--packages/linux/linux-openmoko-devel_2.6.23+2.6.24-rc7.bb59
-rw-r--r--packages/linux/linux-openmoko.inc19
-rw-r--r--packages/linux/linux-openmoko/gta02-sound.patch2
-rw-r--r--packages/linux/linux-openmoko_2.6.22.5.bb3
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/.mtn2git_empty0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/arm_pxa_20070923.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/arm_pxa_20070923.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/binutils-buildid-arm.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/binutils-buildid-arm.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/connectplus-remove-ide-HACK.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/connectplus-remove-ide-HACK.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-akita (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-akita)24
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-bootcdx86 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-bootcdx86)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-c7x0 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-c7x0)198
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-collie (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie)714
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-htcuniversal (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-htcuniversal)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-hx2000 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-hx2000)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-poodle (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-poodle)2
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemuarm (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemuarm)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemux86 (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemux86)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-spitz (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-spitz)2
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-tosa (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-tosa)2
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-zylonite (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-zylonite)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hostap-monitor-mode.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/hostap-monitor-mode.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni-acx.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni-acx.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch1094
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/mmcsd_no_scr_check-r2.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/mmcsd_no_scr_check-r2.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pda-power.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pda-power.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa-serial-hack.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pxa-serial-hack.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa27x_overlay-r8.patch2427
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa_fb_overlay.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pxa_fb_overlay.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.0-2.6.15.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/squashfs3.0-2.6.15.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.2-2.6.20-r0.patch4376
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/uvesafb-0.1-rc3-2.6.22.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/uvesafb-0.1-rc3-2.6.22.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/versatile-armv6.patch19
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/vt_ioctl_race.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/vt_ioctl_race.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/w100fb-unused-var.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/w100fb-unused-var.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/wm97xx-lcdnoise-r0.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/wm97xx-lcdnoise-r0.patch)0
-rw-r--r--packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/zylonite-boot.patch (renamed from packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/zylonite-boot.patch)0
-rw-r--r--packages/linux/linux-rp.inc5
-rw-r--r--packages/linux/linux-rp_2.6.23+2.6.24-rc6+git.bb (renamed from packages/linux/linux-rp_2.6.23+2.6.24-rc0+git.bb)58
-rw-r--r--packages/linux/linux-rp_2.6.23.bb2
-rw-r--r--packages/linux/linux-storcenter/defconfig-2.6.15.71176
-rw-r--r--packages/linux/linux-storcenter/kernel.patch-2.6.15.71181
-rw-r--r--packages/linux/linux-storcenter_2.6.15.7.bb36
-rw-r--r--packages/linux/linux-tornado-omap2/htctornado/defconfig5
-rw-r--r--packages/linux/linux-tornado-omap2_2.6.16.16.bb1
-rw-r--r--packages/linux/linux/simpad/defconfig44
-rw-r--r--packages/linux/linux_2.6.21.bb2
-rw-r--r--packages/linux/linux_2.6.22.6.bb3
-rw-r--r--packages/linux/linux_2.6.23.bb15
-rw-r--r--packages/meta/meta-toolchain-gpe-sbox.bb1
-rw-r--r--packages/meta/meta-toolchain-gpe.bb1
-rw-r--r--packages/meta/meta-toolchain-openmoko.bb7
-rw-r--r--packages/meta/meta-toolchain-sbox.bb2
-rw-r--r--packages/meta/meta-toolchain.bb15
-rw-r--r--packages/meta/openprotium-packages.bb20
-rw-r--r--packages/meta/slugos-packages.bb18
-rw-r--r--packages/midpath/midpath-cldc-native_0.1.bb3
-rw-r--r--packages/midpath/midpath-cldc-x11_0.1.bb2
-rw-r--r--packages/midpath/midpath-cldc_0.1.bb15
-rw-r--r--packages/midpath/midpath.inc8
-rw-r--r--packages/monit/.mtn2git_empty0
-rw-r--r--packages/monit/files/.mtn2git_empty0
-rw-r--r--packages/monit/files/init42
-rw-r--r--packages/monit/monit-4.10.1/.mtn2git_empty0
-rw-r--r--packages/monit/monit-4.10.1/init42
-rw-r--r--packages/monit/monit_4.10.1.bb24
-rw-r--r--packages/musicbrainz/libmusicbrainz_2.1.5.bb13
-rw-r--r--packages/musicbrainz/libmusicbrainz_3.0.1.bb4
-rw-r--r--packages/navit/files/compile-fix.patch8
-rw-r--r--packages/navit/navit.inc18
-rw-r--r--packages/navit/navit_0.0.1.bb8
-rw-r--r--packages/navit/navit_0.0.2.bb7
-rw-r--r--packages/navit/navit_0.0.3.bb15
-rw-r--r--packages/navit/navit_cvs.bb8
-rw-r--r--packages/ncurses/ncurses.inc22
-rw-r--r--packages/ncurses/ncurses_5.3.bb2
-rw-r--r--packages/ncurses/ncurses_5.4.bb2
-rw-r--r--packages/netbase/netbase/mx31moboard/.mtn2git_empty0
-rw-r--r--packages/netbase/netbase/mx31moboard/interfaces14
-rw-r--r--packages/nut/.mtn2git_empty0
-rw-r--r--packages/nut/files/.mtn2git_empty0
-rw-r--r--packages/nut/files/libm.patch21
-rw-r--r--packages/nut/nut_2.2.1.bb14
-rw-r--r--packages/obsolete/classpath/.mtn2git_empty0
-rw-r--r--packages/obsolete/classpath/classpath-gtk_0.93.bb (renamed from packages/classpath/classpath-gtk_0.93.bb)2
-rw-r--r--packages/obsolete/classpath/classpath-gtk_cvs.bb (renamed from packages/classpath/classpath-gtk_cvs.bb)4
-rw-r--r--packages/obsolete/classpath/classpath-minimal-native_0.93.bb (renamed from packages/classpath/classpath-minimal-native_0.93.bb)2
-rw-r--r--packages/obsolete/classpath/classpath-minimal-native_0.95.bb (renamed from packages/classpath/classpath-minimal-native_0.95.bb)0
-rw-r--r--packages/obsolete/classpath/classpath-minimal_0.90.bb (renamed from packages/classpath/classpath-minimal_0.90.bb)2
-rw-r--r--packages/obsolete/classpath/classpath-minimal_0.95.bb (renamed from packages/classpath/classpath-minimal_0.95.bb)4
-rw-r--r--packages/obsolete/classpath/classpath.inc30
-rw-r--r--packages/obsolete/classpath/classpath_0.14.bb (renamed from packages/classpath/classpath_0.14.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_0.15.bb (renamed from packages/classpath/classpath_0.15.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_0.17.bb (renamed from packages/classpath/classpath_0.17.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_0.18.bb (renamed from packages/classpath/classpath_0.18.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_0.19.bb (renamed from packages/classpath/classpath_0.19.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_0.20.bb (renamed from packages/classpath/classpath_0.20.bb)2
-rw-r--r--packages/obsolete/classpath/classpath_cvs.bb (renamed from packages/classpath/classpath_cvs.bb)2
-rw-r--r--packages/obsolete/classpath/files/.mtn2git_empty0
-rw-r--r--packages/obsolete/classpath/files/disable-automake-checks-v2.patch (renamed from packages/classpath/files/disable-automake-checks-v2.patch)0
-rw-r--r--packages/obsolete/classpath/files/disable-automake-checks.patch (renamed from packages/classpath/files/disable-automake-checks.patch)0
-rw-r--r--packages/obsolete/classpath/files/fix-endian-arm-floats.patch (renamed from packages/classpath/files/fix-endian-arm-floats.patch)0
-rw-r--r--packages/obsolete/classpath/files/gconf_version.patch (renamed from packages/classpath/files/gconf_version.patch)0
-rw-r--r--packages/obsolete/jamvm/.mtn2git_empty0
-rw-r--r--packages/obsolete/jamvm/files/.mtn2git_empty0
-rw-r--r--packages/obsolete/jamvm/files/jamvm-1.3.1-size-defaults.patch12
-rw-r--r--packages/obsolete/jamvm/jamvm-1.3.0/.mtn2git_empty0
-rw-r--r--packages/obsolete/jamvm/jamvm-1.3.0/heap-size.patch (renamed from packages/jamvm/jamvm-1.3.0/heap-size.patch)0
-rw-r--r--packages/obsolete/jamvm/jamvm_1.3.0.bb (renamed from packages/jamvm/jamvm_1.3.0.bb)0
-rw-r--r--packages/obsolete/jamvm/jamvm_1.3.1.bb (renamed from packages/jamvm/jamvm_1.3.1.bb)0
-rw-r--r--packages/obsolete/jamvm/jamvm_1.3.2.bb (renamed from packages/jamvm/jamvm_1.3.2.bb)0
-rw-r--r--packages/obsolete/jamvm/jamvm_1.4.1.bb (renamed from packages/jamvm/jamvm_1.4.1.bb)0
-rw-r--r--packages/obsolete/quilt/.mtn2git_empty0
-rw-r--r--packages/obsolete/quilt/quilt-0.39/.mtn2git_empty0
-rw-r--r--packages/obsolete/quilt/quilt-0.39/non-gnu.patch (renamed from packages/quilt/quilt-0.39/non-gnu.patch)0
-rw-r--r--packages/obsolete/quilt/quilt-0.39/nostrip.patch (renamed from packages/quilt/quilt-0.39/nostrip.patch)0
-rw-r--r--packages/obsolete/quilt/quilt-native_0.39.bb (renamed from packages/quilt/quilt-native_0.39.bb)0
-rw-r--r--packages/obsolete/quilt/quilt_0.39.bb (renamed from packages/quilt/quilt_0.39.bb)0
-rw-r--r--packages/obsolete/quilt/quilt_0.39.inc (renamed from packages/quilt/quilt_0.39.inc)0
-rw-r--r--packages/octave/octave.inc12
-rw-r--r--packages/octave/octave_2.1.73.bb2
-rw-r--r--packages/octave/octave_2.9.19.bb14
-rw-r--r--packages/octave/octave_3.0.0.bb14
-rw-r--r--packages/openjade/openjade-native_1.3.2.bb7
-rw-r--r--packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb13
-rw-r--r--packages/openmoko2/openmoko-sample2_svn.bb2
-rw-r--r--packages/openmoko2/settingsgui_0.7+0.8-beta.bb11
-rw-r--r--packages/openprotium-init/files/boot/disk3
-rw-r--r--packages/openprotium-init/files/functions8
-rw-r--r--packages/openprotium-init/files/initscripts/zleds29
-rw-r--r--packages/openprotium-init/openprotium-init_0.10.bb5
-rw-r--r--packages/orinoco/orinoco-modules.inc21
-rw-r--r--packages/orinoco/orinoco-modules_0.13e.bb20
-rw-r--r--packages/orinoco/orinoco-modules_0.15rc1.bb19
-rw-r--r--packages/orinoco/orinoco-modules_0.15rc2.bb22
-rw-r--r--packages/orinoco/orinoco-modules_cvs.bb19
-rw-r--r--packages/pngcrush/.mtn2git_empty0
-rw-r--r--packages/pngcrush/pngcrush-native_1.6.4.bb9
-rw-r--r--packages/pngcrush/pngcrush_1.6.4.bb14
-rw-r--r--packages/pointercal/files/fic-gta02/pointercalbin46 -> 46 bytes
-rw-r--r--packages/pointercal/pointercal_0.0.bb2
-rw-r--r--packages/ppp-dialin/ppp-dialin_0.1.bb3
-rw-r--r--packages/ppp-dsl/files/.mtn2git_empty0
-rw-r--r--packages/ppp-dsl/files/dsl-provider (renamed from packages/ppp-dsl/dsl-provider)0
-rwxr-xr-xpackages/ppp-dsl/files/ppp_on_boot.dsl (renamed from packages/ppp-dsl/ppp_on_boot.dsl)0
-rw-r--r--packages/ppp-dsl/ppp-dsl_0.1-monolithic.bb5
-rw-r--r--packages/ppp-dsl/ppp-dsl_0.1.bb6
-rw-r--r--packages/ppp/ppp-gprs/.mtn2git_empty0
-rw-r--r--packages/ppp/ppp-gprs/chats/.mtn2git_empty0
-rw-r--r--packages/ppp/ppp-gprs/chats/chat-gprs9
-rw-r--r--packages/ppp/ppp-gprs/peers/.mtn2git_empty0
-rw-r--r--packages/ppp/ppp-gprs/peers/_gprs68
-rw-r--r--packages/ppp/ppp-gprs/peers/_gprs-ap-internet3
-rw-r--r--packages/ppp/ppp-gprs_1.0.bb22
-rw-r--r--packages/pwsafe/.mtn2git_empty0
-rw-r--r--packages/pwsafe/pwsafe_0.2.0.bb18
-rw-r--r--packages/python/python-2.5-manifest.inc116
-rw-r--r--packages/python/python-ecore_cvs.bb3
-rw-r--r--packages/python/python-edbus_cvs.bb9
-rw-r--r--packages/python/python-edje_cvs.bb3
-rw-r--r--packages/python/python-efl-examples.bb10
-rw-r--r--packages/python/python-efl.bb4
-rw-r--r--packages/python/python-efl.inc21
-rw-r--r--packages/python/python-emotion_cvs.bb3
-rw-r--r--packages/python/python-epsilon_cvs.bb3
-rw-r--r--packages/python/python-evas_cvs.bb3
-rw-r--r--packages/python/python_2.5.1.bb4
-rw-r--r--packages/qpf-fonts/qpf-unismall_1.0.0.bb4
-rw-r--r--packages/quilt/files/non-gnu.patch (renamed from packages/quilt/quilt-0.45/non-gnu.patch)0
-rw-r--r--packages/quilt/quilt-0.45/install.patch (renamed from packages/quilt/files/install.patch)0
-rw-r--r--packages/quilt/quilt-0.46/.mtn2git_empty0
-rw-r--r--packages/quilt/quilt-0.46/aclocal.patch126
-rw-r--r--packages/quilt/quilt-0.46/install.patch13
-rw-r--r--packages/quilt/quilt-native.inc2
-rw-r--r--packages/quilt/quilt-native_0.45.bb1
-rw-r--r--packages/quilt/quilt-native_0.46.bb1
-rw-r--r--packages/quilt/quilt-package.inc19
-rw-r--r--packages/quilt/quilt.inc5
-rw-r--r--packages/quilt/quilt_0.45.bb8
-rw-r--r--packages/quilt/quilt_0.45.inc3
-rw-r--r--packages/quilt/quilt_0.46.bb1
-rw-r--r--packages/roadmap/files/options.mk.patch34
-rw-r--r--packages/roadmap/files/roadmap_path.patch57
-rw-r--r--packages/roadmap/roadmap-gtk2-1.0.12/roadgps.desktop.patch11
-rw-r--r--packages/roadmap/roadmap-gtk2.inc11
-rw-r--r--packages/roadmap/roadmap-gtk2_1.0.12.bb44
-rw-r--r--packages/roadmap/roadmap-gtk2_1.1.0.bb44
-rw-r--r--packages/roadmap/roadmap-gtk2_cvs.bb44
-rw-r--r--packages/roadmap/roadmap.inc12
-rw-r--r--packages/roadmap/zroadmap-1.0.12/qt2-fixes.patch25
-rw-r--r--packages/roadmap/zroadmap.inc10
-rw-r--r--packages/roadmap/zroadmap_1.0.12.bb38
-rw-r--r--packages/roadmap/zroadmap_1.1.0.bb37
-rw-r--r--packages/roadmap/zroadmap_cvs.bb39
-rw-r--r--packages/rp-pppoe/rp-pppoe-3.8/dont-swallow-errors.patch11
-rw-r--r--packages/rp-pppoe/rp-pppoe_3.8.bb3
-rw-r--r--packages/sablevm/sablevm-classpath_1.1.9.bb2
-rw-r--r--packages/sablevm/sablevm-classpath_1.11.3.bb2
-rw-r--r--packages/sablevm/sablevm-classpath_1.12.bb2
-rw-r--r--packages/sccd/files/scc.h2
-rw-r--r--packages/sccd/sccd_1.0.bb6
-rw-r--r--packages/screen/screen_4.0.2.bb4
-rw-r--r--packages/speech-dispatcher/speech-dispatcher_0.6.5.bb8
-rw-r--r--packages/supertux/files/.mtn2git_empty0
-rw-r--r--packages/supertux/files/gp2x.patch2614
-rw-r--r--packages/supertux/files/img-resize.sh28
-rw-r--r--packages/supertux/files/supertux-smallsize-data.tar.bz2bin0 -> 41782 bytes
-rw-r--r--packages/supertux/files/supertux.desktop20
-rw-r--r--packages/supertux/files/supertux.pngbin0 -> 4097 bytes
-rw-r--r--packages/supertux/supertux-qvga_0.1.3.bb57
-rw-r--r--packages/supertux/supertux_0.1.2.bb16
-rw-r--r--packages/supertux/supertux_0.1.3.bb22
-rw-r--r--packages/swt/.mtn2git_empty0
-rw-r--r--packages/swt/files/.mtn2git_empty0
-rw-r--r--packages/swt/files/Makefile78
-rw-r--r--packages/swt/files/swt-hildon.patch128
-rw-r--r--packages/swt/swt-gtk.inc58
-rw-r--r--packages/swt/swt3.3-gtk_3.3.1.bb10
-rw-r--r--packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb7
-rw-r--r--packages/swt/swt3.4-gtk_3.3+3.4M3.bb12
-rw-r--r--packages/tasks/task-base.bb2
-rw-r--r--packages/tasks/task-openmoko-debug.bb3
-rw-r--r--packages/tasks/task-openmoko-feed.bb5
-rw-r--r--packages/tasks/task-openmoko-python-devel.bb11
-rw-r--r--packages/tasks/task-openmoko-toolchain-host.bb26
-rw-r--r--packages/tasks/task-openmoko-toolchain-target.bb (renamed from packages/tasks/task-toolchain-openmoko-sdk.bb)1
-rw-r--r--packages/tasks/task-openprotium.bb52
-rw-r--r--packages/tasks/task-python-everything.bb3
-rw-r--r--packages/tea/tea_17.3.5.bb3
-rw-r--r--packages/ttf-fonts/ttf.inc2
-rw-r--r--packages/u-boot/files/fix-data-abort-from-sd-ombug799.patch11
-rw-r--r--packages/u-boot/u-boot-openmoko_1.2.0+git+svn.bb (renamed from packages/u-boot/u-boot-openmoko_1.2.0+gitf34024d4a328e6edd906456da98d2c537155c4f7+svn2943.bb)10
-rw-r--r--packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb85
-rw-r--r--packages/u-boot/u-boot-openmoko_svn.bb16
-rw-r--r--packages/uicmoc/files/.mtn2git_empty0
-rw-r--r--packages/uicmoc/files/configure-fix.patch13
-rw-r--r--packages/uicmoc/uicmoc4-native.inc5
-rw-r--r--packages/vsftpd/vsftpd-charconv-2.0.5/.mtn2git_empty0
-rw-r--r--packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch4365
-rw-r--r--packages/vsftpd/vsftpd-charconv_2.0.5.bb50
-rw-r--r--packages/wifistix/wifistix-modules/sk_buff.patch18
-rw-r--r--packages/xcursor-transparent-theme/xcursor-transparent-theme_0.1.1.bb4
-rw-r--r--packages/xcursor-transparent-theme/xcursor-watchonly-theme/.mtn2git_empty0
-rwxr-xr-xpackages/xcursor-transparent-theme/xcursor-watchonly-theme/20xcursor-transparent7
-rw-r--r--packages/xcursor-transparent-theme/xcursor-watchonly-theme/skip_watch_cursor.patch23
-rw-r--r--packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb14
-rw-r--r--packages/xerces-c/xerces-c_2.6.0.bb47
-rw-r--r--packages/xerces-c/xerces-c_2.7.0.bb47
-rw-r--r--packages/xerces-c/xerces-c_2.8.0.bb36
-rw-r--r--site/arm-linux3
482 files changed, 30101 insertions, 2178 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index c11f463a98..9e5f8f4387 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -152,17 +152,17 @@ Recipes: altboot, webcam-server
Person: Michael 'Mickey' Lauer
Mail: mlauer@vanille-media.de
-Distros: Ångström, generic
-Machines: poodle, c7x0, spitz, nokia770, x86, qemuarm, qemux86
-Interests: Core OE infrastructure, Python, GUI-Toolkits
-Recipes: python*, qt*, qte*, sip*
+Distros: OpenMoko, Ångström, Generic
+Machines: fic-gta01, fic-gta02, nokia810, x86, qemuarm, qemux86
+Interests: Core OE infrastructure, everything Python, EFL, E17, Qt4
+Recipes: *python*, efl/*, e17*
Person: Paul Sokolovsky
Mail: pmiscml@gmail.com
Machines: h3900, h4000, hx4700
Interests: PocketPC and Palm devices support, Win32 support
Interests: Cross-machine unification
-Recipes: linux-handhelds-2.6, opie-*
+Recipes: linux-handhelds-2.6, opie-*, initramfs-*, gnome-mplayer
Person: Philip Balister
Mail: Crofton@balister.org
diff --git a/classes/cmake.bbclass b/classes/cmake.bbclass
new file mode 100644
index 0000000000..cec74349dc
--- /dev/null
+++ b/classes/cmake.bbclass
@@ -0,0 +1,7 @@
+inherit autotools
+
+cmake_do_configure() {
+ cmake . -DCMAKE_INSTALL_PREFIX:PATH=${prefix}
+}
+
+EXPORT_FUNCTIONS do_configure
diff --git a/classes/concatenated-image.bbclass b/classes/concatenated-image.bbclass
new file mode 100644
index 0000000000..5cf8d33c05
--- /dev/null
+++ b/classes/concatenated-image.bbclass
@@ -0,0 +1,38 @@
+
+#
+# define the FLASH_KERNEL_SIZE and FLASH_ROOT_SIZE in your machine.conf,
+# and this class builds a simple, padded concatenated image of
+# <kernel><padding><rootfs> and performs error checking that either
+# kernel or rootfs isn't too large to fit.
+#
+concat_pack_image() {
+ # find latest kernel - is there a more general way to do this?
+ KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}* | tail -n 1`
+ if [ -z "$KERNEL" ]; then
+ oefatal "No kernel found in ${DEPLOY_DIR_IMAGE}. Was expecting a ${KERNEL_IMAGETYPE}\* file."
+ 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
+ KERNEL_SIZE_MAX_DEC=`echo ${FLASH_KERNEL_SIZE} | awk --non-decimal-data '{printf "%d\n", $1}' `
+ ROOT_SIZE_MAX_DEC=`echo ${FLASH_ROOT_SIZE} | awk --non-decimal-data '{printf "%d\n", $1}' `
+ KERNEL_SIZE=`ls -l $KERNEL | awk '{print $5}'`
+ if [ $KERNEL_SIZE -gt $KERNEL_SIZE_MAX_DEC ]; then
+ oefatal "Kernel too large at $KERNEL_SIZE bytes. Max is $KERNEL_SIZE_MAX_DEC."
+ exit 1
+ fi
+ ROOT_SIZE=`ls -l $ROOTFS | awk '{print $5}'`
+ if [ $ROOT_SIZE -gt $ROOT_SIZE_MAX_DEC ]; then
+ oefatal "Rootfs is too large at $ROOT_SIZE bytes. Max is $ROOT_SIZE_MAX_DEC."
+ exit 1
+ fi
+ PAD_SIZE=`echo "$KERNEL_SIZE_MAX_DEC - $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 += "concat_pack_image; "
+
diff --git a/classes/insane.bbclass b/classes/insane.bbclass
index 840ebf6eff..97cf036dd9 100644
--- a/classes/insane.bbclass
+++ b/classes/insane.bbclass
@@ -464,7 +464,6 @@ python do_qa_configure() {
os.path.join(root,"config.log")
if "config.log" in files:
if os.system(statement) == 0:
- bb.fatal("This autoconf log indicates errors, it looked at \
- host includes. Rerun configure task after fixing this. \
- Path was '%s'" % root)
+ bb.fatal("""This autoconf log indicates errors, it looked at host includes.
+Rerun configure task after fixing this. The path was '%s'""" % root)
}
diff --git a/classes/java-library.bbclass b/classes/java-library.bbclass
new file mode 100644
index 0000000000..8aecfef1b9
--- /dev/null
+++ b/classes/java-library.bbclass
@@ -0,0 +1,37 @@
+# Inherit this bbclass for each java recipe that builds a Java library (jar file[s]).
+#
+# It automatically adds important build dependencies, defines JPN (Java Package Name)
+# a package named ${JPN} whose contents are those of ${datadir}/java (the jar location).
+#
+# The JPN is basically lib${PN}-java but takes care of the fact that ${PN} already
+# starts with "lib" and/or ends with "-java". In case the "lib" prefix is part of
+# your package's normal name (e.g. liberator) the guessing is wrong and you have
+# to set JPN manually!
+
+inherit java
+
+def java_package_name(d):
+ import bb;
+
+ pre=""
+ post=""
+
+ pn = bb.data.getVar('PN', d, 1)
+ if not pn.startswith("lib"):
+ pre='lib'
+
+ if not pn.endswith("-java"):
+ post='-java'
+
+ return pre + pn + post
+
+JPN ?= "${@java_package_name(d)}"
+
+DEPENDS_prepend = "virtual/javac-native fastjar-native "
+
+PACKAGES = "${JPN}"
+
+PACKAGE_ARCH_${JPN} = "all"
+
+FILES_${JPN} = "${datadir_java}"
+
diff --git a/classes/java.bbclass b/classes/java.bbclass
new file mode 100644
index 0000000000..7fa6dc1786
--- /dev/null
+++ b/classes/java.bbclass
@@ -0,0 +1,62 @@
+# Defines the commonly used target directories and provides a convenience
+# function to install jar files.
+
+# Jar location on target
+datadir_java ?= ${datadir}/java
+
+# JNI library location on target
+libdir_jni ?= ${libdir}/jni
+
+STAGING_DATADIR_JAVA ?= ${STAGING_DATADIR}/java
+STAGING_LIBDIR_JNI ?= ${STAGING_LIBDIR}/jni
+
+oe_jarinstall() {
+ # Purpose: Install a jar file and create all the given symlinks to it.
+ # Example:
+ # oe_jarinstall foo-1.3.jar foo.jar
+ # Installs foo-1.3.jar and creates symlink foo.jar.
+ #
+ # oe_jarinstall -s foo-1.3.jar foo.jar
+ # Installs foo-1.3.jar to staging and creates symlink foo.jar.
+ #
+ # oe_jarinstall -r foo-1.3.jar foo_1_3.jar foo.jar
+ # Installs foo_1_3.jar as foo-1.3.jar and creates a symlink to this.
+ #
+ dir=${D}${datadir_java}
+ destname=""
+ while [ "$#" -gt 0 ]; do
+ case "$1" in
+ -s)
+ dir=${STAGING_DATADIR_JAVA}
+ ;;
+ -r)
+ shift
+ destname=$1
+ ;;
+ -*)
+ oefatal "oe_jarinstall: unknown option: $1"
+ ;;
+ *)
+ break;
+ ;;
+ esac
+ shift
+ done
+
+ jarname=$1
+ destname=${destname:-`basename $jarname`}
+ shift
+
+ install -d $dir
+ install -m 0644 $jarname $dir/$destname
+
+ # Creates symlinks out of the remaining arguments.
+ while [ "$#" -gt 0 ]; do
+ if [ -e $dir/$1 ]; then
+ oewarn "file was in the way. removing:" $dir/$1
+ rm $dir/$1
+ fi
+ ln -s $destname $dir/$1
+ shift
+ done
+}
diff --git a/classes/module-base.bbclass b/classes/module-base.bbclass
index da5bd01dae..c98baceeab 100644
--- a/classes/module-base.bbclass
+++ b/classes/module-base.bbclass
@@ -10,6 +10,7 @@ export KERNEL_SOURCE = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-source')
KERNEL_OBJECT_SUFFIX = "${@[".o", ".ko"][base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion') > "2.6.0"]}"
KERNEL_CCSUFFIX = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-ccsuffix')}"
KERNEL_LDSUFFIX = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-ldsuffix')}"
+KERNEL_ARSUFFIX = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-arsuffix')}"
# Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture
# specific options necessary for building the kernel and modules.
@@ -17,9 +18,12 @@ TARGET_CC_KERNEL_ARCH ?= ""
HOST_CC_KERNEL_ARCH ?= "${TARGET_CC_KERNEL_ARCH}"
TARGET_LD_KERNEL_ARCH ?= ""
HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}"
+TARGET_AR_KERNEL_ARCH ?= ""
+HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}"
KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc${KERNEL_CCSUFFIX} ${HOST_CC_KERNEL_ARCH}"
KERNEL_LD = "${LD}${KERNEL_LDSUFFIX} ${HOST_LD_KERNEL_ARCH}"
+KERNEL_AR = "${AR}${KERNEL_ARSUFFIX} ${HOST_AR_KERNEL_ARCH}"
# kernel modules are generally machine specific
PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/classes/module.bbclass b/classes/module.bbclass
index 7083076b5f..1d0f1dd4f8 100644
--- a/classes/module.bbclass
+++ b/classes/module.bbclass
@@ -9,7 +9,8 @@ module_do_compile() {
KERNEL_SRC=${STAGING_KERNEL_DIR} \
KERNEL_VERSION=${KERNEL_VERSION} \
CC="${KERNEL_CC}" LD="${KERNEL_LD}" \
- ${MAKE_TARGETS}
+ AR="${KERNEL_AR}" \
+ ${MAKE_TARGETS}
}
module_do_install() {
diff --git a/classes/sanity.bbclass b/classes/sanity.bbclass
index bbc06d9697..9994febf0d 100644
--- a/classes/sanity.bbclass
+++ b/classes/sanity.bbclass
@@ -83,9 +83,6 @@ def check_sanity(e):
if not check_app_exists('${BUILD_PREFIX}g++', e.data):
missing = missing + "C++ Compiler (${BUILD_PREFIX}g++),"
- if not check_app_exists('${BUILD_PREFIX}gfortran', e.data):
- missing = missing + "GNU Fortran Compiler"
-
required_utilities = "patch help2man diffstat texi2html makeinfo cvs svn bzip2 tar gzip gawk md5sum"
for util in required_utilities.split():
diff --git a/classes/sdl.bbclass b/classes/sdl.bbclass
index d478d97f18..23cbf10919 100644
--- a/classes/sdl.bbclass
+++ b/classes/sdl.bbclass
@@ -4,41 +4,41 @@
DEPENDS += "virtual/libsdl libsdl-mixer libsdl-image"
-APPDESKTOP ?= "${PN}.desktop"
+APPDESKTOP ?= "${WORKDIR}/${PN}.desktop"
APPNAME ?= "${PN}"
-APPIMAGE ?= "${PN}.png"
+APPIMAGE ?= "${WORKDIR}/${PN}.png"
sdl_do_sdl_install() {
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/pics
- install -d ${D}${palmtopdir}/apps/Games
- ln -sf ${bindir}/${APPNAME} ${D}${palmtopdir}/bin/${APPNAME}
- install -m 0644 ${APPIMAGE} ${D}${palmtopdir}/pics/${PN}.png
+ install -d ${D}${datadir}/applications
+ install -d ${D}${datadir}/pixmaps
+
+ install -m 0644 ${APPIMAGE} ${D}${datadir}/pixmaps/${PN}.png
if [ -e "${APPDESKTOP}" ]
then
- echo ${APPDESKTOP} present, installing to palmtopdir...
- install -m 0644 ${APPDESKTOP} ${D}${palmtopdir}/apps/Games/${PN}.desktop
+ echo ${APPDESKTOP} present, using it...
+ install -m 0644 ${APPDESKTOP} ${D}${datadir}/applications/
else
echo ${APPDESKTOP} not present, creating one on-the-fly...
- cat >${D}${palmtopdir}/apps/Games/${PN}.desktop <<EOF
+ cat >${D}${datadir}/applications/${PN}.desktop <<EOF
[Desktop Entry]
-Note=Auto Generated... this may be not what you want
+Name=${PN}
Comment=${DESCRIPTION}
+Note=Auto Generated by OE SDL bbclass
Exec=${APPNAME}
Icon=${PN}.png
Type=Application
-Name=${PN}
+Categories=Games
EOF
fi
}
EXPORT_FUNCTIONS do_sdl_install
-addtask sdl_install after do_compile before do_populate_staging
+addtask sdl_install after do_install before do_package
-SECTION = "x11/games"
-SECTION_${PN}-opie = "opie/games"
+#SECTION = "x11/games"
+#SECTION_${PN}-opie = "opie/games"
-PACKAGES += "${PN}-opie"
-RDEPENDS_${PN}-opie += "${PN}"
-FILES_${PN}-opie = "${palmtopdir}"
+#PACKAGES += "${PN}-opie"
+#RDEPENDS_${PN}-opie += "${PN}"
+#FILES_${PN}-opie = "${palmtopdir}"
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
index d833fe922f..ec8a5b9b30 100644
--- a/conf/distro/angstrom-2008.1.conf
+++ b/conf/distro/angstrom-2008.1.conf
@@ -87,16 +87,44 @@ PREFERRED_PROVIDER_avahi = "avahi"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
+#powerpc needs additional patches to gcc
+PREFERRED_VERSION_gcc_dht-walnut ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross_dht-walnut ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk_dht-walnut ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial_dht-walnut ?= "4.1.1"
+
+PREFERRED_VERSION_gcc_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk_xilinx-ml403 ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial_xilinx-ml403 ?= "4.1.1"
+
+PREFERRED_VERSION_gcc_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-sdk_mpc8323e-rdb ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross-initial_mpc8323e-rdb ?= "4.1.1"
+
PREFERRED_VERSION_gcc ?= "4.2.2"
PREFERRED_VERSION_gcc-cross ?= "4.2.2"
PREFERRED_VERSION_gcc-cross-sdk ?= "4.2.2"
PREFERRED_VERSION_gcc-cross-initial ?= "4.2.2"
+
#Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom
require conf/distro/include/preferred-gpe-versions-2.8.inc
require conf/distro/include/preferred-e-versions.inc
require conf/distro/include/preferred-xorg-versions-X11R7.3.inc
+#avr32 only has patches for binutils 2.17 and gcc 4.1.2 in OE
+PREFERRED_VERSION_gcc_avr32 = "4.1.2"
+PREFERRED_VERSION_gcc-cross_avr32 = "4.1.2"
+PREFERRED_VERSION_gcc-cross-sdk_avr32 = "4.1.2"
+PREFERRED_VERSION_gcc-cross-initial_avr32 = "4.1.2"
+PREFERRED_VERSION_binutils_avr32 = "2.17"
+PREFERRED_VERSION_binutils-cross_avr32 = "2.17"
+PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17"
+#there's is no avr32 patch for 0.9.29
+PREFERRED_VERSION_uclibc_avr32 = "0.9.28"
+PREFERRED_VERSION_uclibc-initial_avr32 = "0.9.28"
# Virtuals:
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
diff --git a/conf/distro/include/angstrom-2007-preferred-versions.inc b/conf/distro/include/angstrom-2007-preferred-versions.inc
index 82c31cb64a..156b5b21a3 100644
--- a/conf/distro/include/angstrom-2007-preferred-versions.inc
+++ b/conf/distro/include/angstrom-2007-preferred-versions.inc
@@ -1305,7 +1305,7 @@ PREFERRED_VERSION_nano ?= "2.0.6"
PREFERRED_VERSION_nasm-native ?= "0.98.38"
PREFERRED_VERSION_nautilus ?= "2.12.2"
PREFERRED_VERSION_nautilus-cd-burner ?= "2.8.5"
-PREFERRED_VERSION_navit ?= "0.0.1"
+PREFERRED_VERSION_navit ?= "0.0.3"
PREFERRED_VERSION_nbd ?= "2.8.7"
PREFERRED_VERSION_ncftp ?= "3.2.0"
PREFERRED_VERSION_ncmpc ?= "0.11.1"
@@ -1538,7 +1538,6 @@ PREFERRED_VERSION_python-pylinda ?= "0.6"
PREFERRED_VERSION_python-pylint ?= "0.13.2"
PREFERRED_VERSION_python-pymetar ?= "0.11"
PREFERRED_VERSION_python-pymp3 ?= "0.3.4"
-PREFERRED_VERSION_python-pyqt ?= "4.3"
PREFERRED_VERSION_python-pyrad ?= "0.8"
PREFERRED_VERSION_python-pyraf ?= "1.4"
PREFERRED_VERSION_python-pyreverse ?= "0.5.2"
@@ -1560,7 +1559,6 @@ PREFERRED_VERSION_python-scons-native ?= "0.97"
PREFERRED_VERSION_python-setuptools ?= "0.6c6"
PREFERRED_VERSION_python-sgmlop ?= "1.1"
PREFERRED_VERSION_python-simplejson ?= "1.7.1"
-PREFERRED_VERSION_python-sip ?= "4.7"
PREFERRED_VERSION_python-snmplib ?= "0.1.1"
PREFERRED_VERSION_python-soappy ?= "0.11.6"
PREFERRED_VERSION_python-spydi ?= "0.9.7"
@@ -1721,7 +1719,6 @@ PREFERRED_VERSION_sidplayer ?= "1.5.0"
PREFERRED_VERSION_silo ?= "1.4.8"
PREFERRED_VERSION_simh ?= "3.7-1"
PREFERRED_VERSION_simpad-utilities ?= "1.0"
-PREFERRED_VERSION_sip-native ?= "4.7"
PREFERRED_VERSION_sip3-native ?= "4.0.1"
PREFERRED_VERSION_sipsak ?= "0.9.6"
PREFERRED_VERSION_skippy-xd ?= "0.5.0"
diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc
index 4e01298bf8..aff3ba90d1 100644
--- a/conf/distro/include/angstrom.inc
+++ b/conf/distro/include/angstrom.inc
@@ -151,6 +151,7 @@ FEED_ARCH_nslu2be = "armv5teb"
# armv6
FEED_ARCH_mx31ads = "armv6"
+FEED_ARCH_mx31moboard = "armv6"
FEED_ARCH_nokia800 = "armv6"
FEED_ARCH_omap2420h4 = "armv6"
FEED_ARCH_omap2430sdp = "armv6"
diff --git a/conf/distro/include/moko-autorev.inc b/conf/distro/include/moko-autorev.inc
index 87fea8d622..eb0a403fb3 100644
--- a/conf/distro/include/moko-autorev.inc
+++ b/conf/distro/include/moko-autorev.inc
@@ -39,6 +39,7 @@ SRCREV_pn-openmoko-theme-standard2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-theme-standard2-qvga ?= "${AUTOREV}"
SRCREV_pn-openmoko-today2 ?= "${AUTOREV}"
SRCREV_pn-openmoko-today2-folders ?= "${AUTOREV}"
+SRCREV_pn-openmoko-toolchain-scripts ?= "${AUTOREV}"
SRCREV_pn-openmoko-worldclock2 ?= "${AUTOREV}"
SRCREV_pn-openocd ?= "${AUTOREV}"
diff --git a/conf/distro/include/sane-srcdates.inc b/conf/distro/include/sane-srcdates.inc
index 8f82eb4611..cff6d7316b 100644
--- a/conf/distro/include/sane-srcdates.inc
+++ b/conf/distro/include/sane-srcdates.inc
@@ -53,7 +53,7 @@ SRCDATE_gtkhtml2 ?= "20060323"
# Enlightenment Foundation Libraries
# Caution: This is not alphabetically, but (roughly) dependency-sorted.
# Please leave it like that.
-EFL_SRCDATE = "20071206"
+EFL_SRCDATE = "20080117"
SRCDATE_edb-native ?= "${EFL_SRCDATE}"
SRCDATE_edb ?= "${EFL_SRCDATE}"
SRCDATE_eet-native ?= "${EFL_SRCDATE}"
@@ -88,6 +88,7 @@ SRCDATE_eflpp ?= "${EFL_SRCDATE}"
SRCDATE_python-evas ?= "${EFL_SRCDATE}"
SRCDATE_python-ecore ?= "${EFL_SRCDATE}"
SRCDATE_python-edje ?= "${EFL_SRCDATE}"
+SRCDATE_python-edbus ?= "${EFL_SRCDATE}"
SRCDATE_python-emotion ?= "${EFL_SRCDATE}"
SRCDATE_python-epsilon ?= "${EFL_SRCDATE}"
SRCDATE_python-ewl ?= "${EFL_SRCDATE}"
@@ -106,7 +107,8 @@ SRCDATE_entice ?= "${EFL_SRCDATE}"
SRCDATE_entrance ?= "${EFL_SRCDATE}"
SRCDATE_e-utils ?= "${EFL_SRCDATE}"
SRCDATE_e-wm ?= "${EFL_SRCDATE}"
-SRCDATE_enna ?= "${EFL_SRCDATE}"
+SRCDATE_enna = "${EFL_SRCDATE}"
+#SRCDATE_enna ?= "${EFL_SRCDATE}"
SRCDATE_exquisite ?= "${EFL_SRCDATE}"
# Misc packages, sorted by alphabet
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index af96ae435a..cdcf35d928 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -25,6 +25,7 @@ SRCREV_pn-fbgrab-viewer-native ?= "1943"
SRCREV_pn-fstests ?= "204"
SRCREV_pn-gconf-dbus ?= "606"
SRCREV_pn-gnuradio ?= "6377"
+SRCREV_pn-gsm0710muxd ?= "42"
SRCREV_pn-gypsy ?= "56"
SRCREV_pn-hildon-1 ?= "14429"
SRCREV_pn-kismet ?= "2285"
@@ -42,8 +43,8 @@ SRCREV_pn-libowl ?= "277"
SRCREV_pn-libxosd ?= "627"
SRCREV_pn-linux-bfin ?= "3758"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
-SRCREV_pn-linux-ixp4xx ?= "957"
-SRCREV_pn-linux-openmoko ?= "3238"
+SRCREV_pn-linux-ixp4xx ?= "983"
+SRCREV_pn-linux-openmoko ?= "3801"
SRCREV_pn-llvm-gcc4 ?= "374"
SRCREV_pn-llvm-gcc4-cross ?= "374"
SRCREV_pn-maemo-mapper ?= "118"
@@ -104,7 +105,7 @@ SRCREV_pn-openmoko-stylus-demo-simple ?= "1818"
SRCREV_pn-openmoko-taskmanager ?= "1663"
SRCREV_pn-openmoko-tasks ?= "320"
SRCREV_pn-openmoko-tasks2 ?= "361"
-SRCREV_pn-openmoko-terminal2 ?= "3542"
+SRCREV_pn-openmoko-terminal2 ?= "3764"
SRCREV_pn-openmoko-theme-standard ?= "2370"
SRCREV_pn-openmoko-theme-standard-qvga ?= "2370"
SRCREV_pn-openmoko-theme-standard2 ?= "3425"
@@ -112,12 +113,14 @@ SRCREV_pn-openmoko-theme-standard2-qvga ?= "3425"
SRCREV_pn-openmoko-today ?= "3056"
SRCREV_pn-openmoko-today2 ?= "3609"
SRCREV_pn-openmoko-today2-folders ?= "3414"
+SRCREV_pn-openmoko-toolchain-scripts ?= "3767"
SRCREV_pn-openmoko-worldclock2 ?= "3365"
SRCREV_pn-openocd ?= "206"
SRCREV_pn-openocd-native ?= "206"
SRCREV_pn-oprofileui ?= "160"
SRCREV_pn-psplash ?= "249"
SRCREV_pn-python-formencode = "3148"
+SRCREV_pn-python-gsmd = "127"
SRCREV_pn-settings-daemon ?= "1755"
SRCREV_pn-sjf2410-linux-native ?= "933"
SRCREV_pn-sphyrna ?= "45"
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
index e3ddd2165b..dd6c2e0b7e 100644
--- a/conf/distro/openmoko.conf
+++ b/conf/distro/openmoko.conf
@@ -4,6 +4,7 @@
#@DESCRIPTION: Linux Distribution Configuration for the OpenMoko Platform
#-----------------------------------------------------------------------------
+require conf/distro/include/preferred-om-2008-versions.inc
require conf/distro/include/angstrom-2007-for-openmoko.inc
#
@@ -47,11 +48,8 @@ PREFERRED_PROVIDER_libgsmd = "libgsmd"
# Same kernel runs on both these machines
PACKAGE_ARCH_pn-linux-openmoko_fic-gta01 = "${MACHINE_CLASS}"
PACKAGE_ARCH_pn-linux-openmoko_fic-gta02 = "${MACHINE_CLASS}"
-# Same touchscreen on both these machines
-PACKAGE_ARCH_pn-pointercal_fic-gta01 = "${MACHINE_CLASS}"
-PACKAGE_ARCH_pn-pointercal_fic-gta02 = "${MACHINE_CLASS}"
-SRC_URI_OVERRIDES_PACKAGE_ARCH_pn-pointercal_fic-gta01 = "0"
-SRC_URI_OVERRIDES_PACKAGE_ARCH_pn-pointercal_fic-gta02 = "0"
+PACKAGE_ARCH_pn-linux-openmoko-devel_fic-gta01 = "${MACHINE_CLASS}"
+PACKAGE_ARCH_pn-linux-openmoko-devel_fic-gta02 = "${MACHINE_CLASS}"
# Same kernel so same usb
PACKAGE_ARCH_pn-usb-gadget-mode_fic-gta01 = "${MACHINE_CLASS}"
PACKAGE_ARCH_pn-usb-gadget-mode_fic-gta02 = "${MACHINE_CLASS}"
diff --git a/conf/distro/openprotium.conf b/conf/distro/openprotium.conf
index 928817d815..533b41526b 100644
--- a/conf/distro/openprotium.conf
+++ b/conf/distro/openprotium.conf
@@ -1,69 +1,84 @@
#
-# Open Iomega distribution - based on openslug and generic confs
+# OpenProtium distribution - based upon openslug and generic confs
#
DISTRO_NAME = "openprotium"
-DISTRO_VERSION = ".dev-snapshot-${SRCDATE}"
-DISTRO_TYPE = "alpha"
+DISTRO_VERSION = "1.3"
+DISTRO_TYPE ?= "alpha"
+TARGET_OS = "linux"
+#
+# Basic configuration
+#
+DISTRO_DEV_MANAGER = "udev"
+DISTRO_SSH_DAEMON = "dropbear"
+DISTRO_INIT_MANAGER = "sysvinit"
+DISTRO_LOGIN_MANAGER = "tinylogin"
+MACHINE_TASK_PROVIDER = "task-openprotium"
#
# Naming schemes
#
-INHERIT += "debian"
+INHERIT += "debian multimachine"
#
# Packaging and output format
#
INHERIT += "package_ipk"
-IMAGE_BASENAME = "openprotium"
-IMAGE_FSTYPES = "jffs2"
-FEED_URIS = "openprotium##http://www.openprotium.org/ipkg.ppc.v1.0"
+IMAGE_FSTYPES = "jffs2 tar.gz"
+OPENPROTIUM_URI = "http://www.openprotium.org"
+FEED_ARCH_storcenter = ppc603e
+FEED_ARCH_turbostation = ppc603e
+FEED_URIS = "\
+ no-arch##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/all \
+ base##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/${FEED_ARCH} \
+ ${MACHINE}##${OPENPROTIUM_URI}/releases/${DISTRO_VERSION}/${MACHINE} \
+ "
# For protium on the turbostation
+IMAGE_BASENAME = "openprotium"
IMAGE_BASENAME_turbostation = "openprotium-ts"
-#
-# binutils and compilers
-#
-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"
-#conflict between this and the last below.
-#PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc"
-# Select 2.6 versions of the depmod support
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
-PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc-intermediate"
+# versions
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
-PREFERRED_VERSION_binutils = "2.16"
-PREFERRED_VERSION_binutils-cross = "2.16"
+PREFERRED_VERSION_gcc ?= "4.1.1"
+PREFERRED_VERSION_gcc-cross ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.2"
+PREFERRED_VERSION_gcc-cross-initial ?= "4.1.2"
-PREFERRED_VERSION_gcc = "4.1.1"
-PREFERRED_VERSION_gcc-cross = "4.1.1"
-PREFERRED_VERSION_gcc-cross-initial = "4.1.1"
+PREFERRED_VERSION_glibc = "2.6.1"
+PREFERRED_VERSION_glibc-intermediate = "2.6.1"
+PREFERRED_VERSION_glibc-initial = "2.6.1"
-PREFERRED_VERSION_glibc = "2.5"
-PREFERRED_VERSION_glibc-intermediate = "2.5"
-PREFERRED_VERSION_glibc-initial = "2.3.2"
+PREFERRED_VERSION_linux-libc-headers = "2.6.11.1"
-#
-# Target OS & FPU system
#
-USE_NLS ?= "no"
-TARGET_OS = "linux"
-HOTPLUG = "udev"
-PREFERRED_PROVIDER_virtual/libiconv = "glibc"
-PREFERRED_PROVIDER_virtual/libintl = "glibc"
-
+# Providers...
#
-# Bootstrap & Init
+# binutils and compilers
#
-#PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
-require conf/distro/include/sane-srcdates.inc
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-linux-libc-for-gcc = "glibc-intermediate"
+PREFERRED_PROVIDER_virtual/powerpc-linux-libc-initial = "glibc-initial"
+
+PREFERRED_PROVIDER_virtual/libc = "glibc"
+PREFERRED_PROVIDER_virtual/libiconv = "glibc"
+PREFERRED_PROVIDER_virtual/libintl = "glibc"
+
+#silence a warning message...
+PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+
#
+# Misc items.
#
-# Ensure consistency across all SlugOS builds for the provider of a
-# relational database - use the latest version of the SleepyCat
-# Berkeley database
-PREFERRED_PROVIDER_virtual/db = "db"
-PREFERRED_PROVIDER_virtual/db-native = "db-native"
+PREFERRED_PROVIDER_virtual/db ?= "db"
+PREFERRED_PROVIDER_virtual/db-native ?= "db-native"
+PREFERRED_PROVIDER_gconf ?= "gconf"
-CMDLINE_DEBUG = "noirqdebug"
+require conf/distro/include/sane-srcdates.inc
+require conf/distro/include/sane-srcrevs.inc
diff --git a/conf/distro/openwrt-sdk.conf b/conf/distro/openwrt-sdk.conf
index fc760f9ea0..92e5ac5b39 100644
--- a/conf/distro/openwrt-sdk.conf
+++ b/conf/distro/openwrt-sdk.conf
@@ -18,9 +18,12 @@ require conf/distro/generic-uclibc.conf
# Header
#
DISTRO_NAME = "OpenWRT"
+DISTRO_REVISION = "2"
+
+IPKGBUILDCMD = "ipkg-build -c -o 0 -g 0"
# This is what lives in SDK
ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc"
# Make sure that we have correct package dependencies for SDK-provided libs.
-ASSUME_SHLIBS += "libc.so.0:uclibc libgcc_s.so.1:libgcc"
+ASSUME_SHLIBS += "libc.so.0:uclibc libm.so.0:uclibc libgcc_s.so.1:libgcc"
diff --git a/conf/machine/chumby.conf b/conf/machine/chumby.conf
new file mode 100644
index 0000000000..6cf2e05480
--- /dev/null
+++ b/conf/machine/chumby.conf
@@ -0,0 +1,26 @@
+#@TYPE: Machine
+#@Name: Chumby
+#@DESCRIPTION: Machine configuration for the Chumby
+
+TARGET_ARCH = "arm"
+
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth ext2 vfat touchscreen usbhost usbgadget wifi"
+
+GUI_MACHINE_CLASS = "smallscreen"
+PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
+
+MACHINE_EXTRA_RRECOMMENDS = "\
+ kernel-modules \
+
+
+require conf/machine/include/tune-arm926ejs.inc
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "38400 ttyS0"
+
+# used by opie-collections.inc
+ROOT_FLASH_SIZE = "22"
+
+IMAGE_FSTYPES += "cramfs"
diff --git a/conf/machine/collie.conf b/conf/machine/collie.conf
index c91bdcfc92..04e0e83051 100644
--- a/conf/machine/collie.conf
+++ b/conf/machine/collie.conf
@@ -3,24 +3,16 @@
#@DESCRIPTION: Machine configuration for the SA1100 based Sharp Zaurus SL-5000 and SL-5500 devices
TARGET_ARCH = "arm"
+TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm1110"
MACHINE_KERNEL_VERSION ?= "2.6"
-require conf/machine/include/collie-${MACHINE_KERNEL_VERSION}.inc
+require conf/machine/include/zaurus-${MACHINE_KERNEL_VERSION}.inc
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
-# This is needed for the ramdisk script to work
-MACHINE_EXTRA_RDEPENDS += "e2fsprogs-mke2fs"
-
EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
-
IMAGE_LINGUAS = ""
-
IMAGE_FSTYPES ?= "jffs2 tar.gz"
-require conf/machine/include/tune-strongarm.inc
-
ROOT_FLASH_SIZE = "14"
# actually 14680064, see EXTRA_IMAGECMD above
-
-GUI_MACHINE_CLASS_poodle = "smallscreen"
diff --git a/conf/machine/fic-gta01.conf b/conf/machine/fic-gta01.conf
index baa2e55dc1..ad0c64bef2 100644
--- a/conf/machine/fic-gta01.conf
+++ b/conf/machine/fic-gta01.conf
@@ -44,6 +44,3 @@ EXTRA_IMAGEDEPENDS += "dfu-util-native"
# tune for S3C24x0
include conf/machine/include/tune-arm920t.inc
-# set partition to flash kernel into
-MTD_KERNEL_PARTITION = "/dev/mtd2"
-
diff --git a/conf/machine/fic-gta02.conf b/conf/machine/fic-gta02.conf
index 2b2d016089..bd9621413a 100644
--- a/conf/machine/fic-gta02.conf
+++ b/conf/machine/fic-gta02.conf
@@ -35,7 +35,11 @@ SERIAL_CONSOLE = "115200 ttySAC2"
ROOT_FLASH_SIZE = "256"
# extra jffs2 tweaks
-EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x4000 --pad -n"
+EXTRA_IMAGECMD_jffs2 = "--little-endian --eraseblock=0x20000 --pagesize=0x800 \
+ --no-cleanmarkers --pad -n ; sumtool --eraseblock=0x20000 --no-cleanmarkers \
+ --littleendian --pad \
+ -i ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+ -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2.summary"
# build / upload tools
EXTRA_IMAGEDEPENDS += "sjf2410-linux-native dfu-util-native"
@@ -46,6 +50,3 @@ include conf/machine/include/tune-arm920t.inc
# build YAFFS2
IMAGE_FSTYPES ?= "jffs2 yaffs2"
-# set partition to flash kernel into
-MTD_KERNEL_PARTITION = "/dev/mtd2"
-
diff --git a/conf/machine/h3600.conf b/conf/machine/h3600.conf
index c037226154..6f0e37b803 100644
--- a/conf/machine/h3600.conf
+++ b/conf/machine/h3600.conf
@@ -8,7 +8,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 "
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
# h3700, h3800 have 32, but let that be the bonus
ROOT_FLASH_SIZE = "16"
diff --git a/conf/machine/htcalpine.conf b/conf/machine/htcalpine.conf
index 6bf89999bf..f7f025413d 100644
--- a/conf/machine/htcalpine.conf
+++ b/conf/machine/htcalpine.conf
@@ -15,7 +15,7 @@ VOLATILE_STORAGE_SIZE = "64"
MACHINE_GUI_CLASS = "smallscreen"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda bluetooth usbgadget screen vfat"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda bluetooth usbgadget screen vfat phone"
#
# Software/packages selection
diff --git a/conf/machine/htcapache.conf b/conf/machine/htcapache.conf
index afaa6fc294..b3debb633c 100644
--- a/conf/machine/htcapache.conf
+++ b/conf/machine/htcapache.conf
@@ -15,7 +15,7 @@ VOLATILE_STORAGE_SIZE = "64"
MACHINE_GUI_CLASS = "smallscreen"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda bluetooth usbgadget screen vfat"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa pcmcia irda bluetooth usbgadget screen vfat phone"
#
# Software/packages selection
diff --git a/conf/machine/htcblueangel.conf b/conf/machine/htcblueangel.conf
index a5feeb2d69..f95cb70833 100644
--- a/conf/machine/htcblueangel.conf
+++ b/conf/machine/htcblueangel.conf
@@ -15,7 +15,7 @@ VOLATILE_STORAGE_SIZE = "128"
MACHINE_GUI_CLASS = "smallscreen"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth wifi usbgadget screen vfat"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda bluetooth wifi usbgadget screen vfat phone"
#
# Software/packages selection
diff --git a/conf/machine/htchimalaya.conf b/conf/machine/htchimalaya.conf
index 003406bd88..472e5d69e6 100644
--- a/conf/machine/htchimalaya.conf
+++ b/conf/machine/htchimalaya.conf
@@ -15,7 +15,7 @@ VOLATILE_STORAGE_SIZE = "64"
MACHINE_GUI_CLASS = "smallscreen"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen vfat"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen vfat phone"
#
# Software/packages selection
diff --git a/conf/machine/htcsable.conf b/conf/machine/htcsable.conf
index a577cc78d2..2ae1419bae 100644
--- a/conf/machine/htcsable.conf
+++ b/conf/machine/htcsable.conf
@@ -15,7 +15,7 @@ VOLATILE_STORAGE_SIZE = "64"
MACHINE_GUI_CLASS = "smallscreen"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "240"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen vfat"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa irda usbgadget screen vfat phone"
#
# Software/packages selection
diff --git a/conf/machine/htctornado.conf b/conf/machine/htctornado.conf
index 016247213d..b311afe1b4 100644
--- a/conf/machine/htctornado.conf
+++ b/conf/machine/htctornado.conf
@@ -9,7 +9,7 @@ PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
PREFERRED_PROVIDER_virtual/kernel = "linux-tornado-omap2"
-MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget vfat"
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget vfat phone"
MACHINE_EXTRA_RDEPENDS = "alsa-state"
diff --git a/conf/machine/htcwallaby.conf b/conf/machine/htcwallaby.conf
index 34255a1536..515700d9e6 100644
--- a/conf/machine/htcwallaby.conf
+++ b/conf/machine/htcwallaby.conf
@@ -8,7 +8,7 @@
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 "
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
ROOT_FLASH_SIZE = "16"
VOLATILE_STORAGE_SIZE = "32"
diff --git a/conf/machine/include/collie-2.6.inc b/conf/machine/include/collie-2.6.inc
deleted file mode 100644
index bc80185fa0..0000000000
--- a/conf/machine/include/collie-2.6.inc
+++ /dev/null
@@ -1,33 +0,0 @@
-PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
-
-SERIAL_CONSOLE = "115200 ttySA0"
-MACHINE_FEATURES = "kernel26 apm pcmcia screen irda usbgadget keyboard touchscreen wifi vfat"
-
-MACHINE_EXTRA_RDEPENDS = "kernel-modules"
-
-MACHINE_POSTPROCESS_COMMAND = "zaurus_make_installkit"
-
-zaurus_make_installkit () {
- cd ${DEPLOY_DIR_IMAGE}
- rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit/
- mkdir ${IMAGE_NAME}-installkit/
- # Get the latest kernel using the zImage-<machine>.bin symlink
- cp zImage-${MACHINE}.bin ${IMAGE_NAME}-installkit/zImage.bin
- if [ "${MACHINE}" = "spitz" ]; then
- cp gnu-tar ${IMAGE_NAME}-installkit/
- cp ${IMAGE_NAME}.rootfs.tar.gz ${IMAGE_NAME}-installkit/hdimage1.tgz
- else
- [ -f ${IMAGE_NAME}.rootfs.jffs2 ] && cp ${IMAGE_NAME}.rootfs.jffs2 ${IMAGE_NAME}-installkit/initrd.bin
- fi
-
- # All zaurus machines except collie need updater.sh
- if [ "${MACHINE}" != "collie" ]; then
- cp updater.sh.${MACHINE} ${IMAGE_NAME}-installkit/updater.sh
- fi
-
- tar czf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz ${IMAGE_NAME}-installkit/
- md5sum ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit.tgz.md5
- rm -rf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}-installkit/
-}
-
-
diff --git a/conf/machine/include/ixp4xx.inc b/conf/machine/include/ixp4xx.inc
index bdf00d15c9..924fb54f1e 100644
--- a/conf/machine/include/ixp4xx.inc
+++ b/conf/machine/include/ixp4xx.inc
@@ -7,7 +7,7 @@ MACHINE_FEATURES ?= "kernel26 usbhost ext2 vfat redboot apex"
# Select an appropriate default kernel
PREFERRED_PROVIDER_virtual/kernel ?= "linux-ixp4xx"
-PREFERRED_VERSION_linux-ixp4xx ?= "2.6.21.7+svnr${SRCREV}"
+PREFERRED_VERSION_linux-ixp4xx ?= "2.6.23.14+svnr${SRCREV}"
# Add packages required for basic networking support
MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= "ixp4xx-npe"
diff --git a/conf/machine/include/motorola-ezx-base.inc b/conf/machine/include/motorola-ezx-base.inc
index 87571c0db0..da88b1494f 100644
--- a/conf/machine/include/motorola-ezx-base.inc
+++ b/conf/machine/include/motorola-ezx-base.inc
@@ -11,8 +11,8 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-ezx"
#mtd2: 00580000 00020000 "VFM_Filesystem"
#mtd3: 00020000 00020000 "Logo"
-MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth usbgadget usbhost keyboard screen"
-MACHINE_FEATURES += "iwmmxt"
+MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth usbgadget usbhost keyboard screen phone"
+MACHINE_FEATURES += " iwmmxt"
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
diff --git a/conf/machine/include/poodle-2.6.inc b/conf/machine/include/poodle-2.6.inc
deleted file mode 100644
index fa24a3281b..0000000000
--- a/conf/machine/include/poodle-2.6.inc
+++ /dev/null
@@ -1 +0,0 @@
-require conf/machine/include/zaurus-2.6.inc
diff --git a/conf/machine/include/qemu.inc b/conf/machine/include/qemu.inc
index d84f1efb26..26d1e3f8ca 100644
--- a/conf/machine/include/qemu.inc
+++ b/conf/machine/include/qemu.inc
@@ -1,7 +1,6 @@
PCMCIA_MANAGER = "pcmciautils"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
GUI_MACHINE_CLASS = "bigscreen"
-GPE_EXTRA_INSTALL += "gaim sylpheed"
MACHINE_FEATURES = "kernel26 apm alsa pcmcia bluetooth irda usbgadget screen"
diff --git a/conf/machine/include/tune-strongarm.inc b/conf/machine/include/tune-strongarm.inc
deleted file mode 100644
index 8654c996ef..0000000000
--- a/conf/machine/include/tune-strongarm.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-TARGET_CC_ARCH = "-march=armv4 -mtune=xscale"
-
diff --git a/conf/machine/include/tune-strongarm1100.inc b/conf/machine/include/tune-strongarm1100.inc
new file mode 100644
index 0000000000..f136710409
--- /dev/null
+++ b/conf/machine/include/tune-strongarm1100.inc
@@ -0,0 +1,5 @@
+# This machine lists common configuration options for Strongarm 1100 devices
+# NOTE: The Zaurus Collie also has a Strongarm processor, but uses the 1110 type
+
+TARGET_CC_ARCH = "-march=armv4 -mtune=strongarm1100"
+
diff --git a/conf/machine/include/zaurus-2.6.inc b/conf/machine/include/zaurus-2.6.inc
index 3f84138ac8..a0a71a2969 100644
--- a/conf/machine/include/zaurus-2.6.inc
+++ b/conf/machine/include/zaurus-2.6.inc
@@ -1,8 +1,9 @@
-# Zaurus Clamshell specific configuration for kernel 2.6
-# Don't forget to include zaurus-clamshell.inc as well
+# Zaurus specific configuration for kernel 2.6
+# Additionally, clamshell specific stuff in zaurus-clamshell.inc
TARGET_ARCH = "arm"
PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5e armv5te"
+PACKAGE_EXTRA_ARCHS_collie = ""
MACHINE_KERNEL_VERSION = "2.6"
@@ -10,20 +11,15 @@ ERASEBLOCKSIZE = "0x4000"
ERASEBLOCKSIZE_akita = "0x20000"
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 ${EXTRA_IMAGECMD}"
-
EXTRA_IMAGEDEPENDS += "zaurus-updater"
-# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
-include conf/machine/include/tune-xscale.inc
-
SERIAL_CONSOLE = "115200 ttyS0"
+SERIAL_CONSOLE_collie = "115200 ttySA0"
PREFERRED_PROVIDER_virtual/kernel = "linux-rp"
PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
-
PCMCIA_MANAGER ?= "pcmciautils"
MACHINE_FEATURES = "kernel26 apm alsa pcmcia irda usbgadget keyboard touchscreen screen vfat"
@@ -49,7 +45,7 @@ zaurus_make_installkit () {
mkdir ${IMAGE_NAME}-installkit/
# Get the latest kernel using the zImage-<machine>.bin symlink
- cp zImage-${MACHINE}.bin ${IMAGE_NAME}-installkit/zImage.bin
+ cp zImage-${MACHINE}.bin ${IMAGE_NAME}-installkit/zImage
if [ "${MACHINE}" = "spitz" ]; then
cp gnu-tar ${IMAGE_NAME}-installkit/
diff --git a/conf/machine/include/zaurus-clamshell.inc b/conf/machine/include/zaurus-clamshell.inc
index f66502eff1..43c77d42da 100644
--- a/conf/machine/include/zaurus-clamshell.inc
+++ b/conf/machine/include/zaurus-clamshell.inc
@@ -1,3 +1,6 @@
+# Use tune-xscale per default. Machine independent feeds should be built with tune-strongarm.
+include conf/machine/include/tune-xscale.inc
+
EXTRA_IMAGEDEPENDS += "sharp-flash-header-c700"
IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime -m favourlzo \
diff --git a/conf/machine/jornada56x.conf b/conf/machine/jornada56x.conf
index 72fff1ed5e..a42dd8c127 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"
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
diff --git a/conf/machine/jornada7xx.conf b/conf/machine/jornada7xx.conf
index 8741eb4ff6..ee9117e406 100644
--- a/conf/machine/jornada7xx.conf
+++ b/conf/machine/jornada7xx.conf
@@ -4,7 +4,7 @@
TARGET_ARCH = "arm"
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-jornada7xx"
PCMCIA_MANAGER = "pcmciautils"
diff --git a/conf/machine/mx31moboard.conf b/conf/machine/mx31moboard.conf
new file mode 100644
index 0000000000..c918404d6c
--- /dev/null
+++ b/conf/machine/mx31moboard.conf
@@ -0,0 +1,33 @@
+#@TYPE: Machine
+#@Name: EPFL mx31MoBoard
+#@DESCRIPTION: Machine configuration for EPFL MX31MoBoard
+#@Website: http://mobots.epfl.ch/mx31MoBoard.html
+
+TARGET_ARCH = "arm"
+TARGET_FPU_arm = "hard"
+
+MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget"
+
+GUI_MACHINE_CLASS = "smallscreen"
+PACKAGE_EXTRA_ARCHS = "arm armv4t armv5te armv6"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+
+require conf/machine/include/tune-arm1136jf-s.inc
+
+#
+# usb networking
+#
+module_conf_g_ether = "alias usb0 g_ether"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "-L 115200 ttymxc0 vt100"
+
+# used by opie-collections.inc
+ROOT_FLASH_SIZE = "32"
+
+# to avoid annoying jffs2 messages
+EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000"
+
+IMAGE_FSTYPES += "tar.gz"
+
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index 45fc16dc29..4e36c6d38a 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -12,6 +12,8 @@ XSERVER = "xserver-kdrive-xomap"
# 800x480 is big enough for me
GUI_MACHINE_CLASS = "bigscreen"
+MACHINE_DISPLAY_WIDTH_PIXELS = "800"
+MACHINE_DISPLAY_HEIGHT_PIXELS = "480"
# Use tune-arm926 per default. Machine independent feeds should be built with tune-strongarm.
require conf/machine/include/tune-arm926ejs.inc
diff --git a/conf/machine/nokia800.conf b/conf/machine/nokia800.conf
index 58ddb25744..144df2ed08 100644
--- a/conf/machine/nokia800.conf
+++ b/conf/machine/nokia800.conf
@@ -8,6 +8,8 @@ PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-xomap"
XSERVER = "xserver-kdrive-xomap"
GUI_MACHINE_CLASS = "bigscreen"
+MACHINE_DISPLAY_WIDTH_PIXELS = "800"
+MACHINE_DISPLAY_HEIGHT_PIXELS = "480"
TARGET_FPU = "hard"
include conf/machine/include/tune-arm1136jf-s.inc
diff --git a/conf/machine/shark.conf b/conf/machine/shark.conf
index d7d35cfda1..87c260856d 100644
--- a/conf/machine/shark.conf
+++ b/conf/machine/shark.conf
@@ -15,7 +15,7 @@ SERIAL_CONSOLE = "ttySA0 115200 vt100"
ROOT_FLASH_SIZE = "16"
USE_VT = "0"
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
MACHINE_FEATURES = "kernel26 apm alsa pcmcia keyboard ext2"
MACHINE_EXTRA_RDEPENDS_append = " mpg321 mpd madplay "
diff --git a/conf/machine/simpad.conf b/conf/machine/simpad.conf
index 6334d34171..e187ee1e75 100644
--- a/conf/machine/simpad.conf
+++ b/conf/machine/simpad.conf
@@ -9,7 +9,7 @@ TARGET_ARCH = "arm"
MACHINE_FEATURES = "apm pcmcia irda screen touchscreen vfat"
include conf/machine/include/simpad-${MACHINE_KERNEL_VERSION}.inc
-require conf/machine/include/tune-strongarm.inc
+require conf/machine/include/tune-strongarm1100.inc
ROOT_FLASH_SIZE = "16"
diff --git a/conf/machine/storcenter.conf b/conf/machine/storcenter.conf
index 519c565061..5b69bbdc9a 100644
--- a/conf/machine/storcenter.conf
+++ b/conf/machine/storcenter.conf
@@ -1,23 +1,27 @@
TARGET_ARCH = "powerpc"
-TARGET_OS = "linux"
TARGET_FPU = "hard"
-PACKAGE_EXTRA_ARCHS = "ppc ppc603e"
-
-INHERIT += "storcenter-image"
+PACKAGE_EXTRA_ARCHS = "ppc603e"
# terminal specs - console, but no other ports
-SERIAL_CONSOLE="115200 console"
+SERIAL_CONSOLE="115200 ttyS0"
USE_VT="0"
-MODUTILS=26
-MACHINE_FEATURES= "kernel26 usbhost pci ext2 uboot"
+# uboot switches
+UBOOT_MACHINE="Sandpoint8240_config"
+
+# plug in other tasks - not "really" used unless we are using task-boot
+MACHINE_FEATURES= "kernel26 usbhost pci ext2"
PREFERRED_PROVIDER_virtual/kernel = "linux-storcenter"
+PREFERRED_VERSION_udev = "115"
-# We want udev support in the image
-udevdir = "/dev"
+# the StorCenter Control Daemon provides cmdline fan and light control
+MACHINE_EXTRA_RDEPENDS = "sccd"
-EXTRA_IMAGECMD = "--big-endian"
-ERASEBLOCK_SIZE = "0x10000"
IMAGE_FSTYPES = "jffs2"
+KERNEL_IMAGETYPE ?= uImage
+EXTRA_IMAGECMD_jffs2 += "--pad --big-endian --eraseblock=0x10000"
+# must be in HEX
+FLASH_KERNEL_SIZE=0x170000
+FLASH_ROOT_SIZE=0x590000
require conf/machine/include/tune-ppc603e.inc
diff --git a/contrib/angstrom/build-feeds.sh b/contrib/angstrom/build-feeds.sh
index a0a21ed202..c5d343205f 100755
--- a/contrib/angstrom/build-feeds.sh
+++ b/contrib/angstrom/build-feeds.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-DO_UCLIBC=0
+DO_UCLIBC=1
do_build() {
echo "MACHINE = \"$BUILD_MACHINE\"" > conf/auto.conf
@@ -20,6 +20,12 @@ do_build() {
then
BUILD_MODE="uclibc"
echo 'ANGSTROM_MODE = "uclibc"' >> conf/auto.conf
+
+ if [ "$BUILD_CLEAN" != "" ]
+ then
+ bitbake -c clean $BUILD_CLEAN
+ fi
+
for target in $BUILD_TARGETS
do
bitbake $target && do_report_success
@@ -36,8 +42,9 @@ for machine in ep93xx gumstix-connex gumstix-verdex efika dht-walnut omap5912osk
do
BUILD_MACHINE=$machine
BUILD_CLEAN="libtool-cross qmake-native qmake2-native"
- BUILD_TARGETS="texinfo flex bison gperf gcc binutils automake autoconf m4 pkgconfig \
- task-proper-tools mc screen \
+ BUILD_TARGETS="texinfo flex bison gperf gcc binutils make automake autoconf m4 pkgconfig distcc \
+ usbutils pciutils mtd-utils usbview hal \
+ task-proper-tools mc screen findutils \
mono perl python ruby \
gtk+ qt-x11-free qt4-x11-free \
gpe-mini-browser midori minimo openmoko-browser2 webkit-gtklauncher \
@@ -46,17 +53,24 @@ do
gpe-gallery gpe-scap notecase \
pidgin irssi \
roadmap-gtk2 gpsdrive navit \
- xmms mplayer quasar \
+ xmms mplayer quasar vlc-gpe gnome-mplayer \
wpa-gui wifi-radar kismet aircrack-ng dsniff \
- iptables iperf \
+ nmap iptables iperf \
+ gpe-login ipaq-sleep \
gpe-bluetooth bluez-gnome python-pybluez \
abiword gnumeric evince epdfview gimp \
+ scummvm \
flite \
ctorrent \
asterisk \
- gnuplot mpfr gmp fftw fftwf fftwl \
+ gnuradio gnuplot mpfr gmp fftw fftwf fftwl \
gphoto2 gqview imagemagick ufraw \
tzdata \
+ xserver-kdrive xserver-xorg \
+ xf86-video-fbdev xf86-video-ati xf86-video-vesa \
+ xf86-input-evdev xf86-input-keyboard xf86-input-mouse \
+ task-opie \
+ task-openmoko-base task-openmoko-debug task-openmoko-examples task-openmoko-feed task-openmoko-games task-openmoko-linux task-openmoko-native-sdk task-openmoko-net task-openmoko-phone task-openmoko-pim task-openmoko-ui \
"
do_build
done
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/.mtn2git_empty b/contrib/distro-packages/debian/openembedded-essential-1.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/.mtn2git_empty
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/.mtn2git_empty
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/.mtn2git_empty b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/.mtn2git_empty
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/.mtn2git_empty
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/changelog b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/changelog
index c0eb3d660c..0cb30e8e18 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/changelog
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/changelog
@@ -1,3 +1,10 @@
+
+openembedded-essential (1.3) unstable; urgency=low
+
+ * add gfortran as dependency to complement a5c7b007eaa675cc904f5285291d2f8a597efc84
+
+ -- Rolf Leggewie <oe-devel@rolf.leggewie.biz> Mon, 7 Jan 2008 20:25:00 +0100
+
openembedded-essential (1.2) unstable; urgency=low
* fixed packaging to make lintian happy
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/compat b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/compat
index 7ed6ff82de..7ed6ff82de 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/compat
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/compat
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/control b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/control
index c7a7e5b9f7..62d55fbba6 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/control
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/control
@@ -7,7 +7,7 @@ Standards-Version: 3.7.2
Package: openembedded-essential
Architecture: all
-Depends: python (>= 2.3), ccache, build-essential, quilt, bison, wget, cvs, subversion, git-core, monotone, coreutils, unzip, texi2html, texinfo, libsdl1.2-dev, docbook-utils, gawk
+Depends: python (>= 2.3), ccache, build-essential, quilt, bison, wget, cvs, subversion, git-core, monotone, coreutils, unzip, texi2html, texinfo, libsdl1.2-dev, docbook-utils, gawk, gfortran
Description: Metapackage to install all needed packages to start using OpenEmbedded
OpenEmbedded is a full-featured development environment allowing users to
target a wide variety of devices. Supporting multiple build, release paths and
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/copyright b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/copyright
index 9e4905f97e..9e4905f97e 100644
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/copyright
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/copyright
diff --git a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/rules b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/rules
index 586b2ff42f..586b2ff42f 100755
--- a/contrib/distro-packages/debian/openembedded-essential-1.2/debian/rules
+++ b/contrib/distro-packages/debian/openembedded-essential-1.3/debian/rules
diff --git a/contrib/mtn2git/mtn2git.py b/contrib/mtn2git/mtn2git.py
index a23e757936..1de3010756 100755
--- a/contrib/mtn2git/mtn2git.py
+++ b/contrib/mtn2git/mtn2git.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""
- Copyright (C) 2006, 2007 Holger Hans Peter Freyther
+ Copyright (C) 2006, 2007, 2008 Holger Hans Peter Freyther
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -27,18 +27,6 @@
# -tag handling
# -work with n-merges
#
-# DISCUSSION:
-# -For some reason the get_revision information might be inaccurate
-# and I should consider just comparing the manifests.
-# I would use the manifests of the parents and consider all files deleted
-# and then remove every dir/file that is inside the new manifest from this
-# list.
-# Benefits:
-# - 1:1 match of the manifest regardles of get_revision information
-# - Renaming is handled by git anyway
-# Downsides:
-# - The size of the import will grow.
-#
import mtn
import os
@@ -48,6 +36,17 @@ import email.Utils
import status
+# Interesting revisions:
+# Rename with dest==src: 24cba5923360fef7c5cc81d51000e30b90355eb9
+# Recursive rename: fca159c5c00ae4158c289f5aabce995378d4e41b
+# Delete+Rename: 91da98265a39c93946e00adf5d7bf92b341de847
+#
+#
+#
+
+# Our manifest/tree fifo construct
+cached_tree = {}
+cached_fifo = []
def get_mark(revision):
"""
@@ -104,21 +103,6 @@ def reset_git(ops, revision):
cmd += [""]
print "\n".join(cmd)
-def filter_renamed(manifest, renamed):
- """
- If we base from a revision that has already done
- the move, git-fast-import will complain that the file
- has been already moved
- """
- if len(renamed) == 0:
- return renamed
-
- for line in manifest:
- if line[0] == "file":
- renamed = filter(lambda (to,from_,manifest): to != line[1], renamed)
-
- return renamed
-
def get_git_date(revision):
"""
Convert the "date" cert of monotone to a time understandable by git. No timezone
@@ -127,135 +111,90 @@ def get_git_date(revision):
dt = datetime.datetime.strptime(revision["date"], "%Y-%m-%dT%H:%M:%S").strftime("%a, %d %b %Y %H:%M:%S +0000")
return dt
-def recursively_delete(ops, manifest, revision, dir_name, to_delete):
- """
- Recursively delete all files that dir_name inside the name
- """
- for line in manifest:
- if line[0] == "dir" or line[0] == "file":
- if line[1].startswith(dir_name):
- print >> sys.stderr, "Deleting '%s'" % line[1]
- to_delete.add((line[1], revision))
- elif line[0] in ["format_version"]:
- assert(line[1] == "1")
- else:
- print >> sys.stderr, line[0]
- assert(False)
+def is_executable_attribute_set(attributes, rev):
+ assert(len(attributes) % 3 == 0), rev
- return to_delete
+ if len(attributes) >= 3:
+ for i in range(0, len(attributes)%3+1):
+ if attributes[i] == "attr" and attributes[i+1] == "mtn:execute" and attributes[i+2] == "true":
+ return True
+ return False
-def recursively_rename(ops, manifest, revision, old_name, new_name, to_add_dirs, to_add_files, to_remove_items, files_deleted, files_sticky):
- """
- mtn has a rename command and can rename entrie directories. For git we will have to do the recursive renaming
- ourselves. Basicly we will get all files and replace old_name with new_name but only:
- If the file of the old_manifest is not in our to be deleted list
- """
- old_dir = old_name + "/"
- for line in manifest:
- if line[1].startswith(old_dir) or line[1] == old_name:
- already_handled = False
- for (deleted,_) in files_deleted:
- if line[1] == deleted:
- already_handled = True
- break
-
- # Don't rename files that should be in the same directory
- if line[1] in files_sticky:
- already_handled = True
-
- if already_handled:
- pass
- elif line[0] == "file":
- print >> sys.stderr, "Will add '%s' old: '%s' new: '%s' => result: '%s'" % (line[1], old_name, new_name, line[1].replace(old_name, new_name, 1))
- to_add_files.add((line[1].replace(old_name, new_name, 1), None, revision))
- elif line[0] == "dir":
- to_add_dirs.add((line[1].replace(old_name, new_name, 1), revision))
- elif line[0] in ["format_version"]:
- assert(line[1] == "1")
- else:
- print >> sys.stderr, line[0]
- assert(False)
-
- return (to_add_files, to_add_dirs)
+def build_tree(manifest, rev):
+ """Assemble a filesystem tree from a given manifest"""
-#
-# We need to recursively rename the directories. Now the difficult part is to undo certain operations.
-#
-# e.g we rename the whole dir and then rename a file back. We could revive a directory that was marked
-# for deletion.
-#
-# rename "weird/two/three"
-# to "unweird/four"
-#
-# rename "weird/two/three/four"
-# to "weird/two/three"
-#
-# Here we would schedule weird/two/three for deletion but then revive it again. So three does not
-# get copied to unweird/four/three
-# """
-def recursively_rename_directories(ops, manifests, rename_commands, files_deleted, files_moved_sticky):
- to_add_directories = set()
- to_add_files = set()
- to_remove_items = set()
-
- for (old_name, new_name, old_revision) in rename_commands:
- # Check if we have the above case and rename a more specific directory
- # and then we will alter the result...
- inner_rename = False
- for (other_old_name, other_new_name, other_rev) in rename_commands:
- if old_name.startswith(other_old_name + "/") and other_old_name != old_name:
- inner_rename = True
- print >> sys.stderr, "Inner rename detected", old_name, other_old_name
- # Fixup the renaming
- def rename(filename, filerev, rev, would_be_new_name):
- if filename.startswith(would_be_new_name + "/"):
- return filename.replace(would_be_new_name, new_name, 1), filerev, rev
- return filename, filerev, rev
-
- would_be_new_name = other_new_name + "/" + old_name[len(other_old_name)+1:]
- to_remove_items = set(filter(lambda (item,_): item != new_name, to_remove_items))
- to_add_directories = set(filter(lambda (item,_): item != would_be_new_name, to_add_directories))
- to_add_directories.add((new_name, old_revision))
- to_add_files = set(map(lambda (fn, fr, r): rename(fn, fr, r, would_be_new_name), to_add_files))
-
- if not inner_rename:
- to_remove_items.add((old_name, old_revision))
- recursively_delete(ops, manifests[old_revision], old_revision, old_name + "/", to_remove_items)
- recursively_rename(ops, manifests[old_revision], old_revision, old_name, new_name, to_add_directories, to_add_files, to_remove_items, files_deleted, files_moved_sticky)
-
- return (to_add_directories, to_add_files, to_remove_items)
-
-
-def build_tree(manifest):
- dirs = {}
- files = {}
+ class tree:
+ def __init__(self):
+ self.dirs = {}
+ self.files= {}
+
+ tree = tree()
for line in manifest:
if line[0] == "file":
- files[line[1]] = (line[3],line[4:])
+ tree.files[line[1]] = (line[3], is_executable_attribute_set(line[4:], rev))
elif line[0] == "dir":
- dirs[line[1]] = 1
+ tree.dirs[line[1]] = 1
elif line[0] != "format_version":
- print >> sys.stderr, line[0]
- assert(False)
- return (dirs,files)
+ assert(False), "Rev: %s: Line[0]: '%s'" % (rev, line[0])
-def compare_with_manifest(all_added, all_modified, all_deleted, new_manifest, old_manifests):
- """
- Sanity check that the difference between the old and the new manifest is the one
- we have in all_added, all_modified, all_deleted
- """
- old_trees = {}
- really_added = {}
- really_modified = {}
- really_removed = {}
+ return tree
- current_dirs, current_files = build_tree(new_manifest)
+def get_and_cache_tree(ops, revision):
+ """Simple FIFO to cache a number of trees"""
+ global cached_tree, cached_fifo
- for parent in old_manifests.keys():
- old_trees[parent] = build_tree(old_manifests[parent])
+ if revision in cached_tree:
+ return cached_tree[revision]
+
+ tree = build_tree([line for line in ops.get_manifest_of(revision)], revision)
+ cached_tree[revision] = tree
+ cached_fifo.append(revision)
+
+ # Shrink
+ if len(cached_fifo) > 100:
+ old_name = cached_fifo[0]
+ cached_fifo = cached_fifo[1:]
+ del cached_tree[old_name]
+
+ return tree
+
+def diff_manifest(old_tree, new_tree):
+ """Find additions, modifications and deletions"""
+ added = set()
+ modified = set()
+ deleted = set()
+
+ # Removed dirs
+ for dir in old_tree.dirs.keys():
+ if not dir in new_tree.dirs:
+ deleted.add((dir,True))
+
+ # New dirs
+ for dir in new_tree.dirs.keys():
+ if not dir in old_tree.dirs:
+ added.add(dir)
+
+ # Deleted files
+ for file in old_tree.files.keys():
+ if not file in new_tree.files:
+ deleted.add((file,False))
+
+ # Added files, goes to modifications
+ for file in new_tree.files.keys():
+ if not file in old_tree.files:
+ modified.add((file, new_tree.files[file][0]))
+ continue
+
+ # The file changed, either contents or executable attribute
+ old = old_tree.files[file]
+ new = new_tree.files[file]
+ if old != new:
+ modified.add((file, new_tree.files[file][0]))
+
+
+ return (added, modified, deleted)
- print >> sys.stderr, len(old_manifests)
def fast_import(ops, revision):
"""Import a revision into git using git-fast-import.
@@ -292,27 +231,28 @@ def fast_import(ops, revision):
return
# Use the manifest to find dirs and files
- manifest = [line for line in ops.get_manifest_of(revision["revision"])]
- manifests = {}
- dirs = {}
- for parent in revision["parent"]:
- manifests[parent] = [line for line in ops.get_manifest_of(parent)]
- for line in manifests[parent]:
- if line[0] == "dir":
- if not parent in dirs:
- dirs[parent] = {}
- dirs[parent][line[1]] = 1
+ current_tree = get_and_cache_tree(ops, revision["revision"])
+
+ all_added = set()
+ all_modifications = set()
+ all_deleted = set()
- # We can not just change the mode of a file but we need to modifiy the whole file. We
- # will simply add it to the modified list and ask to retrieve the status from the manifest
- for (file, attribute, value, rev) in revision["set_attributes"]:
- if attribute == "mtn:execute":
- revision["modified"].append((file, None, rev))
- for (file, attribute, rev) in revision["clear_attributes"]:
- if attribute == "mtn:execute":
- revision["modified"].append((file, None, rev))
+ # Now diff the manifests
+ for parent in revision["parent"]:
+ (added, modified, deleted) = diff_manifest(get_and_cache_tree(ops, parent), current_tree)
+ all_added = all_added.union(added)
+ all_modifications = all_modifications.union(modified)
+ all_deleted = all_deleted.union(deleted)
+ if len(revision["parent"]) == 0:
+ (added, modified, deleted) = diff_manifest(build_tree([],""), current_tree)
+ all_added = all_added.union(added)
+ all_modifications = all_modifications.union(modified)
+ all_deleted = all_deleted.union(deleted)
+ # TODO:
+ # Readd the sanity check to see if we deleted and modified an entry. This
+ # could probably happen if we have more than one parent (on a merge)?
cmd = []
cmd += ["commit refs/heads/%s" % branch]
@@ -322,97 +262,28 @@ def fast_import(ops, revision):
cmd += ["data %d" % len(revision["changelog"])]
cmd += ["%s" % revision["changelog"]]
- # Emulation for renaming. We will split them into two lists
- file_renamed_del = set()
- file_renamed_new = set()
- file_moved_sticky = set()
-
if len(revision["parent"]) != 0:
cmd += ["from :%s" % get_mark(revision["parent"][0])]
- renamed = revision["renamed"]
-
- to_rename_directories = []
- for (new_name, old_name, old_revision) in renamed:
- # 24cba5923360fef7c5cc81d51000e30b90355eb9 is a rev where src == dest but the
- # directory got renamed, so this means this file got added to the new directory
- # TODO, XXX, FIXME check if this can be done for directories as well
- if new_name == old_name and not old_name in dirs[old_revision]:
- print >> sys.stderr, "Bogus rename in %s (%s, %s)?" % (revision["revision"], new_name, old_name)
- file_moved_sticky.add(old_name)
-
- # Check if the old_name was a directory in the old manifest
- # If we rename a directory we will need to recursively remove and recursively
- # add...
- # Add the '/' otherwise we might rename the wrong directory which shares the
- # same prefix.
- # fca159c5c00ae4158c289f5aabce995378d4e41b is quite funny. It renames a directory
- # and then renames another directory within the renamed one and in the worse case
- # we will revive a deleted directory, file...
- elif old_name in dirs[old_revision]:
- print >> sys.stderr, "Detected directory rename '%s' => '%s'" % (old_name, new_name)
- assert(old_revision in manifests)
- to_rename_directories.append((old_name, new_name, old_revision))
- else:
- print >> sys.stderr, "Renaming %s => %s" % (old_name, new_name)
- file_renamed_new.add((new_name, None, revision["revision"]))
- file_renamed_del.add((old_name, old_revision))
# The first parent is our from.
for parent in revision["parent"][1:]:
cmd += ["merge :%s" % get_mark(parent)]
- # Do the renaming now
- (renamed_dirs, renamed_new, renamed_old) = recursively_rename_directories(ops, manifests, to_rename_directories, file_renamed_del.union(set(revision["removed"])), file_moved_sticky)
-
- # Sanity check, don't remove anything we modify
- all_added = set(revision["added_dirs"]).union(renamed_dirs)
- all_modifications = set(revision["modified"]).union(set(revision["added_files"])).union(renamed_new).union(file_renamed_new)
- all_deleted = set(revision["removed"]).union(renamed_old).union(file_renamed_del)
- all_deleted_new = all_deleted
-
- # Check if we delete and add at the same time
- for (deleted,rev) in all_deleted:
- for (added,_) in all_added:
- if added == deleted:
- print >> sys.stderr, "Added and Deleted", added, deleted
- all_deleted_new = set(filter(lambda (dele,_): dele != added, all_deleted_new))
- assert((added,rev) not in all_deleted_new)
-
- for (modified,_,_) in all_modifications:
- if modified == deleted:
- print >> sys.stderr, "Modified and Deleted", modified, deleted
- all_deleted_new = set(filter(lambda (dele,_): dele != modified, all_deleted_new))
- assert((modified,rev) not in all_deleted_new)
-
- # Filtered list of to be deleted items
- all_deleted = all_deleted_new
- # Check if we delete but the manifest has a file like this
- for line in manifest:
- if line[0] == "dir" or line[0] == "file":
- for (deleted,rev) in all_deleted:
- if line[1] == deleted:
- # 91da98265a39c93946e00adf5d7bf92b341de847 of mtn has a delete + rename
- print >> sys.stderr, "Trying to delete a file which is in the new manifest", line[1], deleted
- assert(False)
-
- compare_with_manifest(all_added, all_modifications, all_deleted, manifest, manifests)
-
- for (dir_name, rev) in all_added:
+ for dir_name in all_added:
cmd += ["M 644 inline %s" % os.path.join(dir_name, ".mtn2git_empty")]
cmd += ["data <<EOF"]
cmd += ["EOF"]
cmd += [""]
- for (file_name, file_revision, rev) in all_modifications:
- (mode, file) = get_file_and_mode(ops, manifest, file_name, file_revision, revision["revision"])
+ for (file_name, file_revision) in all_modifications:
+ (mode, file) = get_file_and_mode(ops, current_tree, file_name, file_revision, revision["revision"])
cmd += ["M %d inline %s" % (mode, file_name)]
cmd += ["data %d" % len(file)]
cmd += ["%s" % file]
- for (path, rev) in all_deleted:
- assert(rev in dirs)
- if path in dirs[rev]:
+ for (path, is_dir) in all_deleted:
+ if is_dir:
cmd += ["D %s" % os.path.join(path, ".mtn2git_empty")]
else:
cmd += ["D %s" % path]
@@ -428,33 +299,20 @@ def is_trusted(operations, revision):
return False
return True
-def get_file_and_mode(operations, manifest, file_name, _file_revision, rev = None):
- mode = 644
+def get_file_and_mode(operations, file_tree, file_name, _file_revision, rev = None):
+ assert file_name in file_tree.files, "get_file_and_mode: Revision '%s', file_name='%s' " % (rev, file_name)
- file_revision = None
- for line in manifest:
- if line[0] == "file" and line[1] == file_name:
- assert(line[1] == file_name)
- assert(line[2] == "content")
-
- if _file_revision:
- assert(line[3] == _file_revision)
- file_revision = line[3]
-
- attributes = line[4:]
- assert(len(attributes) % 3 == 0)
- if len(attributes) >= 3:
- for i in range(0, len(attributes)%3+1):
- if attributes[i] == "attr" and attributes[i+1] == "mtn:execute" and attributes[i+2] == "true":
- mode = 755
- break
+ (file_revision, executable) = file_tree.files[file_name]
+ if _file_revision:
+ assert _file_revision == file_revision, "Same filerevision for file_name='%s' in rev='%s' (%s,%s)" % (file_name, rev, file_revision, _file_revision)
- assert(file_revision)
- file = "".join([file for file in operations.get_file(file_revision)])
- return (mode, file)
+ if executable:
+ mode = 755
+ else:
+ mode = 644
- print >> sys.stderr, file_name, rev
- assert(False)
+ file = "".join([file for file in operations.get_file(file_revision)])
+ return (mode, file)
def parse_revision(operations, revision):
@@ -491,20 +349,12 @@ def parse_revision(operations, revision):
old_rev = line[1]
elif line[0] == "new_manifest":
revision_description["manifest"] = line[1]
- elif line[0] == "rename":
- revision_description["renamed"].append((line[3], line[1], old_rev))
- elif line[0] == "patch":
- revision_description["modified"].append((line[1], line[5], old_rev))
- elif line[0] == "delete":
- revision_description["removed"].append((line[1], old_rev))
- elif line[0] == "add_dir":
- revision_description["added_dirs"].append((line[1], old_rev))
- elif line[0] == "add_file":
- revision_description["added_files"].append((line[1], line[3], old_rev))
elif line[0] == "clear":
revision_description["clear_attributes"].append((line[1], line[3], old_rev))
elif line[0] == "set":
revision_description["set_attributes"].append((line[1], line[3], line[5], old_rev))
+ elif line[0] in ["rename", "patch", "delete", "add_dir", "add_file"]:
+ pass
else:
print >> sys.stderr, line
assert(False)
@@ -580,10 +430,7 @@ def main(mtn_cli, db, rev):
for head in heads:
print >> sys.stderr, old_heads, head
all_revs += ops.ancestry_difference(head, old_heads)
- for rev in all_revs:
- if not rev in branch_heads:
- branch_heads[rev] = []
- branch_heads[rev].append(branch)
+ status.former_heads[branch] = heads
sorted_revs = [rev for rev in ops.toposort(all_revs)]
@@ -593,10 +440,6 @@ def main(mtn_cli, db, rev):
else:
print >> sys.stderr, "Going to import revision ", rev
fast_import(ops, parse_revision(ops, rev))
- branches = branch_heads[rev]
- for branch in branches:
- status.former_heads[branch] = [rev]
-
if __name__ == "__main__":
import optparse
@@ -621,3 +464,4 @@ if __name__ == "__main__":
print >> sys.stderr, "Failed to open the status file"
main(options.mtn, options.database, options.rev)
status.store(options.status)
+
diff --git a/contrib/python/generate-manifest-2.5.py b/contrib/python/generate-manifest-2.5.py
index 440434229c..39031bf237 100755
--- a/contrib/python/generate-manifest-2.5.py
+++ b/contrib/python/generate-manifest-2.5.py
@@ -11,7 +11,7 @@ import time
VERSION = "2.5.1"
# increase when touching python-core, this should be the same ml version as in python_2.5.1.bb
-BASEREV = 5
+BASEREV = 6
__author__ = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
__version__ = "20071205"
diff --git a/delete.txt b/delete.txt
deleted file mode 100644
index 7c9dc251aa..0000000000
--- a/delete.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Packages to be removed from OpenEmbedded if no one will fix them.
-
-Dropping stuff from metadata is not best way so this file will be filled
-with informations about which parts of metadata will be removed.
-
-Please sort by removal date
-
-Package Name: recipe, directory or subsystem name
-Removal Date: YYYY-MM-DD
-Maintainer: Surname Name + e-mail
-Reason: description why it will get removed
-Proposed by: person which want entry to be removed
-
------------------------------------------------------------------------------
-
-Package Name: Maemo
-Removal Date: 2006-12-15
-Maintainer: none
-Reason: Unfetchable, obsoleted by IT2006 release.
-Proposed by: Marcin 'Hrw' Juszkiewicz
-
-Package Name: task-bootstrap*
-Removal Date: 2006-12-22
-Maintainer: None
-Reason: Obsoleted by task-base
-Proposed by: Koen Kooi
-Note: Moved to packages/obsolete/tasks on 2006-12-22
diff --git a/files/device_table-minimal-add-md.txt b/files/device_table-minimal-add-md.txt
new file mode 100644
index 0000000000..a78ca76605
--- /dev/null
+++ b/files/device_table-minimal-add-md.txt
@@ -0,0 +1,32 @@
+#<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 d 755 0 0 - - - - -
+/dev/initctl p 600 0 0 - - - - -
+/dev/apm_bios c 660 0 46 10 134 - - -
+/dev/fb0 c 600 0 0 29 0 - - -
+/dev/hda b 660 0 6 3 0 - - -
+/dev/hda b 660 0 6 3 1 1 1 5
+/dev/kmem c 640 0 15 1 2 - - -
+/dev/mem c 640 0 15 1 1 - - -
+/dev/null c 666 0 0 1 3 - - -
+/dev/ram b 640 0 0 1 0 0 1 4
+/dev/tty c 662 0 5 5 0 - - -
+/dev/tty c 666 0 5 4 0 0 1 9
+/dev/ttyS c 640 0 5 4 64 0 1 2
+/dev/ttySA c 640 0 5 204 5 0 1 1
+/dev/zero c 644 0 0 1 5 - - -
+/dev/mtd c 660 0 6 90 0 0 2 8
+/dev/mtdblock b 640 0 0 31 0 0 1 8
+/dev/console c 662 0 5 5 1 - - -
+/dev/random c 644 0 0 1 8 - - -
+/dev/urandom c 644 0 0 1 9 - - -
+/dev/ptmx c 644 0 0 5 2 - - -
+/dev/md b 644 0 0 9 0 0 1 4
diff --git a/packages/agg/agg_2.5.bb b/packages/agg/agg_2.5.bb
index a3cf4b9557..ba76a7b4c6 100644
--- a/packages/agg/agg_2.5.bb
+++ b/packages/agg/agg_2.5.bb
@@ -5,7 +5,7 @@ SECTION = "libs"
LICENSE = "AGG License"
DEPENDS = "virtual/libx11 virtual/libsdl freetype"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.antigrain.com/${P}.tar.gz"
S = "${WORKDIR}/${P}"
@@ -32,6 +32,12 @@ do_stage() {
oe_libinstall -a -so libaggplatformsdl ${STAGING_LIBDIR}
install -m 0644 libagg.m4 ${STAGING_DATADIR}/aclocal/
install -d ${STAGING_INCDIR}/agg2
+
+ for f in font_freetype font_win32_tt gpc
+ do
+ install -m 0644 ${S}/$f/*.h ${STAGING_INCDIR}/agg2/
+ done
+
cd include
headers=`find . -name "*.h"`
for f in $headers
@@ -39,6 +45,3 @@ do_stage() {
install -D -m 0644 $f ${STAGING_INCDIR}/agg2/$f
done
}
-
-
-
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index 2707aa224a..02957aebe9 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -8,7 +8,7 @@ DESCRIPTION = "Default ALSA configuration"
LICENSE = "GPL"
RRECOMMENDS_alsa-state = "alsa-states"
PV = "0.1.0"
-PR = "r7"
+PR = "r9"
SRC_URI = " \
file://asoundrc \
@@ -26,6 +26,10 @@ SRC_URI_append_fic-gta01 = " \
file://voip-handset.state \
file://voip-headset.state"
+SRC_URI_append_fic-gta02 = "\
+ file://stereoout.state \
+ "
+
inherit update-rc.d
INITSCRIPT_NAME = "alsa-state"
diff --git a/packages/gnutls/gnutls/.mtn2git_empty b/packages/alsa/alsa-state/fic-gta02/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/gnutls/gnutls/.mtn2git_empty
+++ b/packages/alsa/alsa-state/fic-gta02/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/fic-gta02/asound.state b/packages/alsa/alsa-state/fic-gta02/asound.state
new file mode 100644
index 0000000000..df824b66b6
--- /dev/null
+++ b/packages/alsa/alsa-state/fic-gta02/asound.state
@@ -0,0 +1,875 @@
+state.neo1973gta02 {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'PCM Volume'
+ value.0 255
+ value.1 255
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'ADC Capture Volume'
+ value.0 195
+ value.1 195
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Headphone Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Speaker Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mono Playback Volume'
+ value 121
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Bypass Playback Volume'
+ value.0 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 0
+ }
+ 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 BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Stereo Out Switch'
+ value true
+ }
+ control.87 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM GSM Line Out Switch'
+ value false
+ }
+ control.88 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM GSM Line In Switch'
+ value false
+ }
+ control.89 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Headset Mic Switch'
+ value false
+ }
+ control.90 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Handset Mic Switch'
+ value false
+ }
+ control.91 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Handset Spk Switch'
+ value false
+ }
+ control.92 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp State Switch'
+ value true
+ }
+ control.93 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Spk Switch'
+ value true
+ }
+}
diff --git a/packages/alsa/alsa-state/fic-gta02/stereoout.state b/packages/alsa/alsa-state/fic-gta02/stereoout.state
new file mode 100644
index 0000000000..df824b66b6
--- /dev/null
+++ b/packages/alsa/alsa-state/fic-gta02/stereoout.state
@@ -0,0 +1,875 @@
+state.neo1973gta02 {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'PCM Volume'
+ value.0 255
+ value.1 255
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'ADC Capture Volume'
+ value.0 195
+ value.1 195
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Headphone Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Speaker Playback Volume'
+ value.0 121
+ value.1 121
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mono Playback Volume'
+ value 121
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 7'
+ iface MIXER
+ name 'Bypass Playback Volume'
+ value.0 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 0
+ }
+ 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 BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Stereo Out Switch'
+ value true
+ }
+ control.87 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM GSM Line Out Switch'
+ value false
+ }
+ control.88 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM GSM Line In Switch'
+ value false
+ }
+ control.89 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Headset Mic Switch'
+ value false
+ }
+ control.90 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Handset Mic Switch'
+ value false
+ }
+ control.91 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'DAPM Handset Spk Switch'
+ value false
+ }
+ control.92 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp State Switch'
+ value true
+ }
+ control.93 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Amp Spk Switch'
+ value true
+ }
+}
diff --git a/packages/apmd/apmd-3.2.2/90-wifi-off b/packages/apmd/apmd-3.2.2/90-wifi-off
new file mode 100644
index 0000000000..c54936c4be
--- /dev/null
+++ b/packages/apmd/apmd-3.2.2/90-wifi-off
@@ -0,0 +1,12 @@
+#!/bin/sh
+#Author: Rolf Leggewie
+#
+# turn off wifi cards before suspend so they are fully reloaded upon resume
+
+wifislot = `pccardctl ls|egrep '(hostap|orinoco)'|cut -f 2 -d " "`
+if test $wifislot
+then
+ for slot in $wifislot; do
+ pccardctl eject $wifislot
+ done
+fi
diff --git a/packages/apmd/apmd_3.2.2.bb b/packages/apmd/apmd_3.2.2.bb
index c3fce375d3..e9f5c0cbef 100644
--- a/packages/apmd/apmd_3.2.2.bb
+++ b/packages/apmd/apmd_3.2.2.bb
@@ -3,7 +3,7 @@ SECTION = "base"
PRIORITY = "required"
DEPENDS = "libtool-cross"
LICENSE = "GPL"
-PR = "r8"
+PR = "r9"
SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz \
file://debian.patch;patch=1 \
@@ -12,6 +12,7 @@ SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz \
file://unlinux.patch;patch=1 \
file://init \
file://default \
+ file://90-wifi-off \
file://apmd_proxy \
file://apmd_proxy.conf"
@@ -49,6 +50,7 @@ do_install() {
install -m 4755 ${S}/.libs/apm ${D}${bindir}/apm
install -m 0755 ${S}/.libs/apmd ${D}${sbindir}/apmd
+ install -m 0755 ${WORKDIR}/90-wifi-off ${D}${sysconfdir}/apm/suspend.d
install -m 0755 ${WORKDIR}/apmd_proxy ${D}${sysconfdir}/apm/
install -m 0644 ${WORKDIR}/apmd_proxy.conf ${D}${datadir}/apmd/
install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/apmd
diff --git a/packages/jamvm/jamvm-1.3.0/.mtn2git_empty b/packages/asterisk/asterisk-1.4.17/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/jamvm/jamvm-1.3.0/.mtn2git_empty
+++ b/packages/asterisk/asterisk-1.4.17/.mtn2git_empty
diff --git a/packages/asterisk/asterisk-1.4.17/Makefile.patch b/packages/asterisk/asterisk-1.4.17/Makefile.patch
new file mode 100644
index 0000000000..a6d630949e
--- /dev/null
+++ b/packages/asterisk/asterisk-1.4.17/Makefile.patch
@@ -0,0 +1,20 @@
+--- asterisk-1.4.5/Makefile 2007-05-24 15:05:08.000000000 -0400
++++ asterisk-1.4.5/Makefile.new 2007-06-17 05:36:44.000000000 -0400
+@@ -115,7 +115,7 @@ else
+ ASTSBINDIR=$(sbindir)
+ ASTSPOOLDIR=$(localstatedir)/spool/asterisk
+ ASTLOGDIR=$(localstatedir)/log/asterisk
+- ASTVARRUNDIR=$(localstatedir)/run
++ ASTVARRUNDIR=$(localstatedir)/run/asterisk
+ ASTMANDIR=$(mandir)
+ ifeq ($(OSARCH),FreeBSD)
+ ASTVARLIBDIR=$(prefix)/share/asterisk
+@@ -468,7 +468,7 @@ oldmodcheck:
+ echo " WARNING WARNING WARNING" ;\
+ fi
+
+-install: datafiles bininstall $(SUBDIRS_INSTALL)
++install: datafiles bininstall $(SUBDIRS_INSTALL) samples
+ @if [ -x /usr/sbin/asterisk-post-install ]; then \
+ /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
+ fi
diff --git a/packages/asterisk/asterisk-1.4.17/init b/packages/asterisk/asterisk-1.4.17/init
new file mode 100644
index 0000000000..f26ad38db3
--- /dev/null
+++ b/packages/asterisk/asterisk-1.4.17/init
@@ -0,0 +1,77 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/openpbx and type
+# > update-rc.d asterisk defaults 60
+#
+asterisk=/usr/sbin/asterisk
+pidfile=/var/run/asterisk/asterisk.pid
+asterisk_args="-npqT -U asterisk -G asterisk"
+
+test -x "$asterisk" || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting Asterisk"
+ start-stop-daemon --start --quiet --exec $asterisk -- $asterisk_args
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping Asterisk"
+ $asterisk -rx "stop gracefully"
+ sleep 4
+ if [ -f $pidfile ]; then
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ fi
+ echo "."
+ ;;
+ force-stop)
+ echo -n "Stopping Asterisk"
+ $asterisk -rx "stop now"
+ sleep 2
+ if [ -f $pidfile ]; then
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ fi
+ echo "."
+ ;;
+ restart)
+ echo -n "Restarting Asterisk"
+ if [ -f $pidfile ]; then
+ $asterisk -rx "restart gracefully"
+ sleep 2
+ else
+ start-stop-daemon --start --quiet --exec $asterisk -- $asterisk_args
+ fi
+ echo "."
+ ;;
+ force-restart)
+ echo -n "Forcibly Restarting Asterisk"
+ if [ -f $pidfile ]; then
+ $asterisk -rx "restart now"
+ sleep 2
+ else
+ start-stop-daemon --start --quiet --exec $asterisk -- $asterisk_args
+ fi
+ echo "."
+ ;;
+ reload)
+ echo -n "Reloading Asterisk Configuration"
+ if [ -f $pidfile ]; then
+ $asterisk -rx "reload"
+ else
+ start-stop-daemon --start --quiet --exec $asterisk -- $asterisk_args
+ fi
+ echo "."
+ ;;
+ logger-reload)
+ if [ -f $pidfile ]; then
+ $asterisk -rx "logger reload"
+ fi
+ ;;
+ *)
+ echo "Usage: /etc/init.d/asterisk {start|stop|force-stop|restart|force-restart|reload|logger-reload}"
+ exit 1
+esac
+
+exit 0
+
diff --git a/packages/asterisk/asterisk-1.4.17/logrotate b/packages/asterisk/asterisk-1.4.17/logrotate
new file mode 100644
index 0000000000..dfd25ee55c
--- /dev/null
+++ b/packages/asterisk/asterisk-1.4.17/logrotate
@@ -0,0 +1,12 @@
+/var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/cdr-custom/Master.csv /var/log/asterisk/queue_log /var/log/asterisk/event_log /var/log/asterisk/messages {
+ daily
+ missingok
+ compress
+ delaycompress
+ rotate 30
+ sharedscripts
+ postrotate
+ /etc/init.d/asterisk logger-reload
+ endscript
+}
+
diff --git a/packages/asterisk/asterisk-1.4.17/sounds.xml.patch b/packages/asterisk/asterisk-1.4.17/sounds.xml.patch
new file mode 100644
index 0000000000..b549fea132
--- /dev/null
+++ b/packages/asterisk/asterisk-1.4.17/sounds.xml.patch
@@ -0,0 +1,18 @@
+--- asterisk-1.4.4/sounds/sounds.xml 2007-05-24 17:00:45.000000000 -0400
++++ asterisk-1.4.4/sounds/sounds.xml.new 2007-05-25 13:23:41.000000000 -0400
+@@ -6,7 +6,6 @@
+ <member name="CORE-SOUNDS-EN-ALAW" displayname="English, a-Law format">
+ </member>
+ <member name="CORE-SOUNDS-EN-GSM" displayname="English, GSM format" >
+- <defaultenabled>yes</defaultenabled>
+ </member>
+ <member name="CORE-SOUNDS-EN-G729" displayname="English, G.729 format">
+ </member>
+@@ -39,7 +38,6 @@
+ </category>
+ <category name="MENUSELECT_MOH" displayname="Music On Hold File Packages" positive_output="yes">
+ <member name="MOH-FREEPLAY-WAV" displayname="FreePlay Music On Hold Files, WAV format" >
+- <defaultenabled>yes</defaultenabled>
+ </member>
+ <member name="MOH-FREEPLAY-ULAW" displayname="FreePlay Music On Hold Files, mu-Law format" >
+ </member>
diff --git a/packages/asterisk/asterisk-1.4.17/volatiles b/packages/asterisk/asterisk-1.4.17/volatiles
new file mode 100644
index 0000000000..c68e786c90
--- /dev/null
+++ b/packages/asterisk/asterisk-1.4.17/volatiles
@@ -0,0 +1,7 @@
+d asterisk asterisk 0775 /var/run/asterisk none
+d asterisk asterisk 0775 /var/lib/asterisk none
+d asterisk asterisk 0775 /var/log/asterisk none
+d asterisk asterisk 0775 /var/log/asterisk/cdr-csv none
+d asterisk asterisk 0775 /var/log/asterisk/cdr-custom none
+d asterisk asterisk 0775 /var/spool/asterisk/outgoing none
+d asterisk asterisk 0775 /var/spool/asterisk/voicemail none
diff --git a/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb
new file mode 100644
index 0000000000..f1b3d12cd7
--- /dev/null
+++ b/packages/asterisk/asterisk-core-sounds-en-alaw_1.4.7.bb
@@ -0,0 +1,46 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-core-sounds-en-alaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ #install -m 644 ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/CREDITS* ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/core-sounds-en.txt ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/dictate
+ #install -m 644 ${WORKDIR}/dictate/* ${D}${localstatedir}/lib/asterisk/sounds/dictate/
+ mv ${WORKDIR}/dictate ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/digits
+ #install -m 644 ${WORKDIR}/digits/* ${D}${localstatedir}/lib/asterisk/sounds/digits/
+ mv ${WORKDIR}/digits ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/followme
+ #install -m 644 ${WORKDIR}/followme/* ${D}${localstatedir}/lib/asterisk/sounds/followme/
+ mv ${WORKDIR}/followme ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/letters
+ #install -m 644 ${WORKDIR}/letters/* ${D}${localstatedir}/lib/asterisk/sounds/letters/
+ mv ${WORKDIR}/letters ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/silence
+ #install -m 644 ${WORKDIR}/silence/* ${D}${localstatedir}/lib/asterisk/sounds/silence/
+ mv ${WORKDIR}/silence ${D}${localstatedir}/lib/asterisk/sounds/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb
new file mode 100644
index 0000000000..205c8ff067
--- /dev/null
+++ b/packages/asterisk/asterisk-core-sounds-en-g729_1.4.7.bb
@@ -0,0 +1,46 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-core-sounds-en-g729-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ #install -m 644 ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/CREDITS* ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/core-sounds-en.txt ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/dictate
+ #install -m 644 ${WORKDIR}/dictate/* ${D}${localstatedir}/lib/asterisk/sounds/dictate/
+ mv ${WORKDIR}/dictate ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/digits
+ #install -m 644 ${WORKDIR}/digits/* ${D}${localstatedir}/lib/asterisk/sounds/digits/
+ mv ${WORKDIR}/digits ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/followme
+ #install -m 644 ${WORKDIR}/followme/* ${D}${localstatedir}/lib/asterisk/sounds/followme/
+ mv ${WORKDIR}/followme ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/letters
+ #install -m 644 ${WORKDIR}/letters/* ${D}${localstatedir}/lib/asterisk/sounds/letters/
+ mv ${WORKDIR}/letters ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/silence
+ #install -m 644 ${WORKDIR}/silence/* ${D}${localstatedir}/lib/asterisk/sounds/silence/
+ mv ${WORKDIR}/silence ${D}${localstatedir}/lib/asterisk/sounds/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb
new file mode 100644
index 0000000000..2a46c74f84
--- /dev/null
+++ b/packages/asterisk/asterisk-core-sounds-en-gsm_1.4.7.bb
@@ -0,0 +1,48 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-core-sounds-en-gsm-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ #install -m 644 ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/CREDITS* ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/core-sounds-en.txt ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/CREDITS* ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/core-sounds-en.txt ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/dictate
+ #install -m 644 ${WORKDIR}/dictate/* ${D}${localstatedir}/lib/asterisk/sounds/dictate/
+ mv ${WORKDIR}/dictate ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/digits
+ #install -m 644 ${WORKDIR}/digits/* ${D}${localstatedir}/lib/asterisk/sounds/digits/
+ mv ${WORKDIR}/digits ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/followme
+ #install -m 644 ${WORKDIR}/followme/* ${D}${localstatedir}/lib/asterisk/sounds/followme/
+ mv ${WORKDIR}/followme ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/letters
+ #install -m 644 ${WORKDIR}/letters/* ${D}${localstatedir}/lib/asterisk/sounds/letters/
+ mv ${WORKDIR}/letters ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/silence
+ #install -m 644 ${WORKDIR}/silence/* ${D}${localstatedir}/lib/asterisk/sounds/silence/
+ mv ${WORKDIR}/silence ${D}${localstatedir}/lib/asterisk/sounds/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb b/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb
new file mode 100644
index 0000000000..c29ae60f99
--- /dev/null
+++ b/packages/asterisk/asterisk-core-sounds-en-ulaw_1.4.7.bb
@@ -0,0 +1,46 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-core-sounds-en-ulaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ #install -m 644 ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/CREDITS* ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/core-sounds-en.txt ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/dictate
+ #install -m 644 ${WORKDIR}/dictate/* ${D}${localstatedir}/lib/asterisk/sounds/dictate/
+ mv ${WORKDIR}/dictate ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/digits
+ #install -m 644 ${WORKDIR}/digits/* ${D}${localstatedir}/lib/asterisk/sounds/digits/
+ mv ${WORKDIR}/digits ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/followme
+ #install -m 644 ${WORKDIR}/followme/* ${D}${localstatedir}/lib/asterisk/sounds/followme/
+ mv ${WORKDIR}/followme ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/letters
+ #install -m 644 ${WORKDIR}/letters/* ${D}${localstatedir}/lib/asterisk/sounds/letters/
+ mv ${WORKDIR}/letters ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/silence
+ #install -m 644 ${WORKDIR}/silence/* ${D}${localstatedir}/lib/asterisk/sounds/silence/
+ mv ${WORKDIR}/silence ${D}${localstatedir}/lib/asterisk/sounds/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb
new file mode 100644
index 0000000000..f18d46258f
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-alaw_1.4.6.bb
@@ -0,0 +1,37 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-alaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunkes (too many of them)
+ rm ${WORKDIR}/conf-thereare.alaw
+ rm ${WORKDIR}/invalid.alaw
+ mv ${WORKDIR}/[a-d]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb
new file mode 100644
index 0000000000..48fabbbdc4
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-g729_1.4.6.bb
@@ -0,0 +1,37 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-g729-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunks (too many files)
+ rm ${WORKDIR}/conf-thereare.g729
+ rm ${WORKDIR}/invalid.g729
+ mv ${WORKDIR}/[a-d]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb
new file mode 100644
index 0000000000..da463391b1
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-gsm_1.4.6.bb
@@ -0,0 +1,37 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-gsm-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunks (too many files)
+ rm ${WORKDIR}/conf-thereare.gsm
+ rm ${WORKDIR}/invalid.gsm
+ mv ${WORKDIR}/[a-d]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb b/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb
new file mode 100644
index 0000000000..6a6f3f5fba
--- /dev/null
+++ b/packages/asterisk/asterisk-extra-sounds-en-ulaw_1.4.6.bb
@@ -0,0 +1,37 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-extra-sounds-en-ulaw-${PV}.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/sounds
+ # HACK: moving the files in chunkes (too many of them)
+ rm ${WORKDIR}/conf-thereare.ulaw
+ rm ${WORKDIR}/invalid.ulaw
+ mv ${WORKDIR}/[a-d]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/[e-l]*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ mv ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+ #install -m 644 ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/sounds/
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/ha
+ #install -m 644 ${WORKDIR}/ha/* ${D}${localstatedir}/lib/asterisk/sounds/ha/
+ mv ${WORKDIR}/ha ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/phonetic
+ #install -m 644 ${WORKDIR}/phonetic/* ${D}${localstatedir}/lib/asterisk/sounds/phonetic/
+ mv ${WORKDIR}/phonetic ${D}${localstatedir}/lib/asterisk/sounds
+
+ #install -d ${D}${localstatedir}/lib/asterisk/sounds/wx
+ #install -m 644 ${WORKDIR}/wx/* ${D}${localstatedir}/lib/asterisk/sounds/wx/
+ mv ${WORKDIR}/wx ${D}${localstatedir}/lib/asterisk/sounds
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/sounds/
+}
+
+
diff --git a/packages/asterisk/asterisk-moh-freeplay-alaw_0.0.0.bb b/packages/asterisk/asterisk-moh-freeplay-alaw_0.0.0.bb
new file mode 100644
index 0000000000..96c662444e
--- /dev/null
+++ b/packages/asterisk/asterisk-moh-freeplay-alaw_0.0.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-moh-freeplay-alaw.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/moh
+ #install -m 644 ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/moh/
+ #install -m 644 ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+ mv ${WORKDIR}/*.alaw ${D}${localstatedir}/lib/asterisk/moh/
+ mv ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/moh/
+}
+
+
diff --git a/packages/asterisk/asterisk-moh-freeplay-g729_0.0.0.bb b/packages/asterisk/asterisk-moh-freeplay-g729_0.0.0.bb
new file mode 100644
index 0000000000..581e6bf84f
--- /dev/null
+++ b/packages/asterisk/asterisk-moh-freeplay-g729_0.0.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-moh-freeplay-g729.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/moh
+ install -m 644 ${WORKDIR}/*.g729 ${D}${localstatedir}/lib/asterisk/moh/
+ install -m 644 ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/moh/
+}
+
+
diff --git a/packages/asterisk/asterisk-moh-freeplay-gsm_0.0.0.bb b/packages/asterisk/asterisk-moh-freeplay-gsm_0.0.0.bb
new file mode 100644
index 0000000000..e45c3eec4e
--- /dev/null
+++ b/packages/asterisk/asterisk-moh-freeplay-gsm_0.0.0.bb
@@ -0,0 +1,20 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-moh-freeplay-gsm.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/moh
+ install -m 644 ${WORKDIR}/*.gsm ${D}${localstatedir}/lib/asterisk/moh/
+ install -m 644 ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/moh/
+}
+
+
diff --git a/packages/asterisk/asterisk-moh-freeplay-ulaw_0.0.0.bb b/packages/asterisk/asterisk-moh-freeplay-ulaw_0.0.0.bb
new file mode 100644
index 0000000000..e0e0293c34
--- /dev/null
+++ b/packages/asterisk/asterisk-moh-freeplay-ulaw_0.0.0.bb
@@ -0,0 +1,22 @@
+DESCRIPTION="The Asterisk open source software PBX"
+HOMEPAGE="http://www.asterisk.org"
+SECTION = "voip"
+LICENSE="GPL"
+#DEPENDS="asterisk"
+#PR = "r1"
+
+SRC_URI="http://downloads.digium.com/pub/telephony/sounds/releases/asterisk-moh-freeplay-ulaw.tar.gz"
+
+do_install() {
+ install -d ${D}${localstatedir}/lib/asterisk/moh
+ #install -m 644 ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/moh/
+ #install -m 644 ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+ mv ${WORKDIR}/*.ulaw ${D}${localstatedir}/lib/asterisk/moh/
+ mv ${WORKDIR}/LICENSE-* ${D}${localstatedir}/lib/asterisk/moh/
+}
+
+pkg_postinst_prepend() {
+ chown -R asterisk:asterisk ${localstatedir}/lib/asterisk/moh/
+}
+
+
diff --git a/packages/asterisk/asterisk_1.4.17.bb b/packages/asterisk/asterisk_1.4.17.bb
new file mode 100644
index 0000000000..fb64581364
--- /dev/null
+++ b/packages/asterisk/asterisk_1.4.17.bb
@@ -0,0 +1,171 @@
+# Copyright (C) 2007, Stelios Koroneos - Digital OPSiS, All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+DESCRIPTION = "The Asterisk open source software PBX"
+HOMEPAGE = "http://www.asterisk.org"
+SECTION = "voip"
+LICENSE = "GPLv2"
+PRIORITY = "optional"
+SECTION = "console/telephony"
+DEPENDS = "speex readline zlib openssl curl popt gnutls sqlite libogg libvorbis"
+#RRECOMMENDS_${PN} = "logrotate"
+PR = "r0"
+
+
+SRC_URI="http://ftp.digium.com/pub/asterisk/releases/asterisk-${PV}.tar.gz\
+ file://sounds.xml.patch;patch=1\
+ file://Makefile.patch;patch=1\
+ file://logrotate \
+ file://volatiles \
+ file://init"
+
+ARCH_efika="ppc"
+ARCH_dht-walnut="ppc"
+ARCH_magicbox="ppc"
+ARCH_sequoia="ppc"
+
+
+
+
+INITSCRIPT_NAME = "asterisk"
+INITSCRIPT_PARAMS = "defaults 60"
+
+inherit autotools update-rc.d
+
+EXTRA_OECONF = "--with-ssl=${STAGING_DIR}/${TARGET_SYS}\
+ --with-z=${STAGING_DIR}/${TARGET_SYS}\
+ --with-curl=${STAGING_DIR}/${TARGET_SYS}\
+ --with-termcap=${STAGING_DIR}/${TARGET_SYS}\
+ --with-ogg=${STAGING_DIR}/${TARGET_SYS}\
+ --with-vorbis=${STAGING_DIR}/${TARGET_SYS}\
+ --with-sqlite=${STAGING_DIR}/${TARGET_SYS}\
+ --with-popt=${STAGING_DIR}/${TARGET_SYS}\
+ --with-gnutls=${STAGING_DIR}/${TARGET_SYS}\
+ --without-curses\
+ --with-ncurses=${STAGING_DIR}/${TARGET_SYS}\
+ --without-imap\
+ --without-netsnmp\
+ --without-odbc\
+ --without-osptk\
+ --without-nbs\
+ --without-pwlib\
+ --without-radius\
+ --without-tds\
+ --without-postgres\
+ --without-zaptel\
+ "
+
+#export NOISY_BUILD=yes
+
+export ASTCFLAGS = "-fsigned-char -I${STAGING_INCDIR} -DPATH_MAX=4096"
+export ASTLDFLAGS="${LDFLAGS} -lpthread -ldl -lresolv "
+export PROC="${ARCH}"
+
+do_configure_prepend () {
+ sed -i 's:/var:${localstatedir}:' ${WORKDIR}/logrotate
+ sed -i 's:/etc/init.d:${sysconfdir}/init.d:' ${WORKDIR}/logrotate
+ sed -i 's:/var:${localstatedir}:' ${WORKDIR}/volatiles
+}
+
+do_configure () {
+ # Looks like rebuilding configure doesn't work, so we are skipping
+ # that and are just using the shipped one
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+
+do_compile() {
+ (
+ #make sure that menuselect gets build using host toolchain
+ unset CC LD CXX CCLD CFLAGS CPPFLAGS LDFLAGS CXXFLAGS
+ cd menuselect
+ ./configure
+ oe_runmake
+ cd ../
+ ) || exit 1
+ oe_runmake
+}
+
+
+
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/asterisk
+ install -c -D -m 644 ${WORKDIR}/logrotate ${D}${sysconfdir}/logrotate.d/asterisk
+ install -c -D -m 644 ${WORKDIR}/volatiles ${D}${sysconfdir}/default/volatiles/asterisk
+}
+
+pkg_postinst_prepend() {
+ grep -q asterisk ${sysconfdir}/group || addgroup --system asterisk
+ grep -q asterisk ${sysconfdir}/passwd || adduser --system --home ${localstatedir}/run/asterisk --no-create-home --disabled-password --ingroup asterisk -s ${base_bindir}/false asterisk
+ chown -R asterisk:asterisk ${libdir}/asterisk ${localstatedir}/lib/asterisk ${localstatedir}/spool/asterisk ${localstatedir}/log/asterisk ${localstatedir}/run/asterisk ${sysconfdir}/asterisk
+}
+
+FILES_${PN} += "${libdir}/asterisk/modules/*"
+FILES_${PN}-dbg += "${libdir}/asterisk/modules/.debug \
+ ${localstatedir}/lib/asterisk/*/.debug"
+
+CONFFILES_${PN} += "${sysconfdir}/asterisk/adsi.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/adtranvofr.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/agents.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/alarmreceiver.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/alsa.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/amd.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/asterisk.adsi"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/asterisk.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr_custom.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr_manager.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr_odbc.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr_pgsql.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/cdr_tds.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/codecs.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/dnsmgr.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/dundi.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/enum.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/extconfig.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/extensions.ael"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/extensions.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/features.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/festival.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/followme.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/func_odbc.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/gtalk.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/h323.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/http.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/iax.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/iaxprov.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/indications.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/jabber.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/logger.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/manager.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/meetme.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/mgcp.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/misdn.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/modules.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/musiconhold.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/muted.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/osp.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/oss.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/phone.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/privacy.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/queues.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/res_odbc.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/res_snmp.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/rpt.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/rtp.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/say.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/sip.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/sip_notify.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/skinny.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/sla.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/smdi.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/telcordia-1.adsi"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/udptl.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/users.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/voicemail.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/vpb.conf"
+CONFFILES_${PN} += "${sysconfdir}/asterisk/zapata.conf"
+CONFFILES_${PN} += "${sysconfdir}/logrotate.d/asterisk"
diff --git a/packages/atk/atk.inc b/packages/atk/atk.inc
index e47a431e5c..5f81cdf67e 100644
--- a/packages/atk/atk.inc
+++ b/packages/atk/atk.inc
@@ -1,13 +1,14 @@
-DEPENDS = "glib-2.0 gtk-doc-native"
DESCRIPTION = "An accessibility toolkit for GNOME."
SECTION = "x11/libs"
PRIORITY = "optional"
LICENSE = "LGPL"
+DEPENDS = "glib-2.0 gtk-doc-native"
+
inherit autotools pkgconfig
EXTRA_OECONF = "--disable-glibtest"
-CFLAGS_append = " -I${STAGING_INCDIR}/glib-2.0 \
- -I${STAGING_INCDIR}/glib-2.0/glib \
- -I${STAGING_INCDIR}/glib-2.0/gobject"
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/atk/atk_1.18.0.bb b/packages/atk/atk_1.18.0.bb
new file mode 100644
index 0000000000..116d8cabff
--- /dev/null
+++ b/packages/atk/atk_1.18.0.bb
@@ -0,0 +1,8 @@
+require atk.inc
+
+SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/atk/1.18/atk-${PV}.tar.bz2"
+
+do_stage () {
+ oe_libinstall -so -C atk libatk-1.0 ${STAGING_LIBDIR}
+ autotools_stage_includes
+}
diff --git a/packages/atk/atk_1.19.3.bb b/packages/atk/atk_1.19.3.bb
index 52136682d7..28adc02ea9 100644
--- a/packages/atk/atk_1.19.3.bb
+++ b/packages/atk/atk_1.19.3.bb
@@ -2,7 +2,13 @@ require atk.inc
SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/atk/1.19/atk-${PV}.tar.bz2"
+CFLAGS_append = "\
+ -I${STAGING_INCDIR}/glib-2.0 \
+ -I${STAGING_INCDIR}/glib-2.0/glib \
+ -I${STAGING_INCDIR}/glib-2.0/gobject \
+ "
+
do_stage () {
- oe_libinstall -so -C atk libatk-1.0 ${STAGING_LIBDIR}
- autotools_stage_includes
+ oe_libinstall -so -C atk libatk-1.0 ${STAGING_LIBDIR}
+ autotools_stage_includes
}
diff --git a/packages/atk/atk_1.20.0.bb b/packages/atk/atk_1.20.0.bb
index a909e0eb61..bb64492337 100644
--- a/packages/atk/atk_1.20.0.bb
+++ b/packages/atk/atk_1.20.0.bb
@@ -1,16 +1,6 @@
-DESCRIPTION = "An accessibility toolkit for GNOME."
-SECTION = "x11/libs"
-PRIORITY = "optional"
-LICENSE = "LGPL"
-
-DEPENDS = "glib-2.0 gtk-doc-native"
+require atk.inc
SRC_URI = "http://download.gnome.org/sources/atk/1.20/${PN}-${PV}.tar.bz2"
-inherit autotools pkgconfig
-EXTRA_OECONF = "--disable-glibtest"
-do_stage () {
- autotools_stage_all
-}
diff --git a/packages/avetanabt/avetanabt_20060413.bb b/packages/avetanabt/avetanabt_20060413.bb
index 54e3d845bb..5b408e6a71 100644
--- a/packages/avetanabt/avetanabt_20060413.bb
+++ b/packages/avetanabt/avetanabt_20060413.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "avetanaBT: Bluetooth API implementation for Java (JSR-82)"
SECTION = "devel"
-DEPENDS = "findutils-native jikes-native kaffeh-native fastjar-native bluez-libs classpath"
+DEPENDS = "findutils-native virtual/javac-native kaffeh-native fastjar-native bluez-libs classpath"
LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.net/projects/avetanabt/"
@@ -22,9 +22,8 @@ do_compile() {
rm -fr build/*
# generate classes
- # javac -> jikes
${STAGING_BINDIR_NATIVE}/find {de,javax,com} -iname *.java > file.list
- ${STAGING_BINDIR_NATIVE}/jikes -verbose --bootclasspath ${STAGING_DATADIR_NATIVE}/kaffeh/rt.jar -d build @file.list
+ ${STAGING_BINDIR_NATIVE}/javac -verbose -bootclasspath ${STAGING_DATADIR_NATIVE}/kaffeh/rt.jar -d build @file.list
# create own version.xml (add version information available at runtime)
head -n 4 version.xml >> build/version.xml
diff --git a/packages/avetanabt/avetanabt_cvs.bb b/packages/avetanabt/avetanabt_cvs.bb
index a8f795989b..08fe2e9b82 100644
--- a/packages/avetanabt/avetanabt_cvs.bb
+++ b/packages/avetanabt/avetanabt_cvs.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "avetanaBT: Bluetooth API implementation for Java (JSR-82)"
SECTION = "devel"
-DEPENDS = "findutils-native jikes-native kaffeh-native fastjar-native bluez-libs classpath"
+DEPENDS = "findutils-native virtual/javac-native kaffeh-native fastjar-native bluez-libs classpath"
LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.net/projects/avetanabt/"
@@ -25,9 +25,8 @@ do_compile() {
rm -fr build/*
# generate classes
- # javac -> jikes
${STAGING_BINDIR_NATIVE}/find {de,javax,com} -iname *.java > file.list
- ${STAGING_BINDIR_NATIVE}/jikes -verbose --bootclasspath ${STAGING_DATADIR_NATIVE}/kaffeh/rt.jar -d build @file.list
+ ${STAGING_BINDIR_NATIVE}/javac -verbose -bootclasspath ${STAGING_DATADIR_NATIVE}/kaffeh/rt.jar -d build @file.list
# create own version.xml (add version information available at runtime)
head -n 4 version.xml >> build/version.xml
diff --git a/packages/jamvm/jamvm/.mtn2git_empty b/packages/base-files/base-files/openprotium/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/jamvm/jamvm/.mtn2git_empty
+++ b/packages/base-files/base-files/openprotium/.mtn2git_empty
diff --git a/packages/base-files/base-files/openprotium/fstab b/packages/base-files/base-files/openprotium/fstab
new file mode 100644
index 0000000000..96b0e2adb8
--- /dev/null
+++ b/packages/base-files/base-files/openprotium/fstab
@@ -0,0 +1,11 @@
+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 defaults 0 0
+#tmpfs /var/volatile tmpfs defaults 0 0
+tmpfs /dev/shm tmpfs mode=0777 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
+
diff --git a/packages/cacao/cacao-cldc.inc b/packages/cacao/cacao-cldc.inc
new file mode 100644
index 0000000000..86df369a32
--- /dev/null
+++ b/packages/cacao/cacao-cldc.inc
@@ -0,0 +1,64 @@
+DESCRIPTION = "Cacao-cldc is a Java Virtual Machine, which uses MIDPath CLDC as default Java core library"
+HOMEPAGE = "http://www.cacaojvm.org/"
+LICENSE = "GPL"
+PRIORITY = "optional"
+SECTION = "interpreters"
+
+DEPENDS = "zlib libtool classpath midpath-cldc cacaoh-cldc-native virtual/javac-native"
+
+# Avoid version number here, otherwise dpkg will expect a package name
+# and cannot be satisfied with a package that provides classpath.
+RDEPENDS = "midpath-cldc"
+
+PROVIDES = "cacao-cldc virtual/java-cldc"
+RPROVIDES_cacao-cldc = "java-cldc-runtime"
+
+inherit autotools update-alternatives
+
+EXTRA_OECONF = "\
+ ${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \
+ --enable-debug \
+ --enable-jni \
+ --disable-libjvm \
+ --enable-java=cldc1.1 \
+ --with-classpath=cldc1.1 \
+ --with-classpath-classes=${STAGING_DATADIR}/midpath-cldc/midpath-cldc1.1.jar \
+ --with-target-classpath-classes=${datadir}/midpath-cldc/midpath-cldc1.1.jar \
+ --with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh-cldc-${PV} \
+ --with-classpath-libdir=${STAGING_LIBDIR}/classpath \
+ --with-classpath-includedir=${STAGING_INCDIR}/classpath \
+ --with-vm-zip=${datadir}/cacao-cldc/vm.zip \
+ --libdir=${libdir}/cacao-cldc \
+ --program-suffix=-cldc \
+ "
+
+S = "${WORKDIR}/cacao-${PV}"
+
+PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
+
+FILES_${PN} = "${bindir}/${PN} ${libdir}/lib*.so* ${datadir}/${PN}"
+FILES_${PN}-doc = "${datadir}/man"
+FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*"
+
+ALTERNATIVE_NAME = "java-cldc"
+ALTERNATIVE_LINK = "${bindir}/${ALTERNATIVE_NAME}"
+ALTERNATIVE_PATH = "${bindir}/cacao-cldc"
+ALTERNATIVE_PRIORITY = "10"
+
+do_configure_prepend() {
+ # Replaces the placeholder OE_LIBDIR_JNI with the JNI library directory
+ # configured in OE.
+ if [ -e src/vm/properties.c ]; then
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/properties.c
+ fi
+
+ if [ -e src/vm/properties.c ]; then
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/vm.c
+ fi
+}
+
+do_configure_append() {
+ # Fix the executable name in the wrapper script.
+ sed -i -e "s|exec cacao|exec cacao-cldc|" src/scripts/java.in
+}
+
diff --git a/packages/cacao/cacao-cldc_0.98.bb b/packages/cacao/cacao-cldc_0.98.bb
index 0f6af678f5..f5a48c40a9 100644
--- a/packages/cacao/cacao-cldc_0.98.bb
+++ b/packages/cacao/cacao-cldc_0.98.bb
@@ -1,35 +1,17 @@
+# Compatible with GNU Classpath 0.95 only!
-require cacao.inc
+require cacao-cldc.inc
-SRC_URI +="file://midpath.patch;patch=1 \
- file://offsets_make.patch;patch=1 \
- file://classpath_var.patch;patch=1 \
- file://libmath.patch;patch=1 \
- file://arm_mmap.patch;patch=1 \
- "
-SRC_URI_append_arm = "file://offset.h_arm.patch;patch=1"
-
-DEPENDS = "cacaoh-cldc-native ecj-native classpath-minimal-native virtual/cldc-api-1.1 libtool zlib"
-RDEPENDS = "virtual/cldc-api-1.1 libltdl"
-RPROVIDES = "virtual/java"
+PR = "r1"
-EXTRA_OECONF += "--with-classpath-libdir=${STAGING_DATADIR}/classpath-minimal \
- --with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal \
- --enable-jni \
- --enable-java=cldc1.1 \
- --with-classpath=cldc1.1 \
- --with-classpath-classes=${STAGING_DATADIR}/java/cldc1.1.jar \
- --with-target-classpath-classes=${datadir}/java/cldc1.1.jar \
- --with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh \
- --disable-libjvm \
- "
+SRC_URI += "\
+ http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.bz2;md5sum=8b8907c8b925761c9410bcadb9705346 \
+ file://midpath.patch;patch=1 \
+ file://offsets_make.patch;patch=1 \
+ file://classpath_var.patch;patch=1 \
+ file://libmath.patch;patch=1 \
+ file://arm_mmap.patch;patch=1 \
+ "
-PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
-
-FILES_${PN} = "${bindir}/cacao"
-FILES_${PN}-doc = "${datadir}/man"
-FILES_${PN}-dbg = "${bindir}/.debug"
+SRC_URI_append_arm = "file://offset.h_arm.patch;patch=1"
-ALTERNATIVE_NAME = "java"
-ALTERNATIVE_PATH = "${bindir}/cacao"
-ALTERNATIVE_PRIORITY = "10"
diff --git a/packages/cacao/cacao-initial_0.98.bb b/packages/cacao/cacao-initial_0.98.bb
new file mode 100644
index 0000000000..08abf41c33
--- /dev/null
+++ b/packages/cacao/cacao-initial_0.98.bb
@@ -0,0 +1,34 @@
+require cacao-native.inc
+
+PROVIDES = "virtual/java-initial"
+
+DEPENDS = "zlib-native libtool-native fastjar-native classpath-initial jikes-initial"
+
+PR = "r0"
+
+SRC_URI = "\
+ http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.bz2; \
+ file://cacao-0.98-initial.patch;patch=1;pnum=1 \
+ "
+
+# libjvm disabled - it would conflict with cacao-native installations
+EXTRA_OECONF = "\
+ --enable-debug \
+ --with-classpath-libdir=${libdir} \
+ --with-classpath-includedir=${includedir}/classpath-initial \
+ --with-classpath-classes=${datadir}/classpath-initial/glibj.zip \
+ --with-vm-zip=${datadir}/cacao-initial/vm.zip \
+ --program-suffix=-initial \
+ --disable-libjvm \
+ "
+
+# enforces the usage of jikes-initial
+export JAVAC=jikes-initial
+
+# enforces the usage of fastjar
+export JAR=fastjar
+
+do_configure_append() {
+ # Fix the executable name in the wrapper script.
+ sed -i -e "s|exec cacao|exec cacao-initial|" src/scripts/java.in
+}
diff --git a/packages/cacao/cacao-native.inc b/packages/cacao/cacao-native.inc
new file mode 100644
index 0000000000..26d3d37f58
--- /dev/null
+++ b/packages/cacao/cacao-native.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "CacaoVM for use as OpenEmbedded's Java VM"
+HOMEPAGE = "http://www.cacaojvm.org/"
+LICENSE = "GPL"
+PRIORITY = "optional"
+SECTION = "interpreters"
+
+DEPENDS = "zlib-native libtool-native classpath-native ecj-initial fastjar-native"
+
+PROVIDES = "virtual/java-native"
+
+S = "${WORKDIR}/cacao-${PV}"
+
+inherit native autotools
+
+EXTRA_OECONF = "\
+ --enable-debug \
+ --with-classpath-libdir=${libdir} \
+ --with-classpath-includedir=${includedir}/classpath \
+ --with-classpath-classes=${datadir}/classpath/glibj.zip \
+ --with-vm-zip=${datadir}/cacao/vm.zip \
+ "
+
+# force usage of ecj-initial (but Java5-compatible class library)
+export JAVAC="${STAGING_BINDIR_NATIVE}/ecj-initial -bootclasspath ${STAGING_DATADIR_NATIVE}/classpath/glibj.zip"
+
+# force usage of fastjar
+export JAR=fastjar
diff --git a/packages/cacao/cacao-native_0.98+hg20071001.bb b/packages/cacao/cacao-native_0.98+hg20071001.bb
new file mode 100644
index 0000000000..409d2c7858
--- /dev/null
+++ b/packages/cacao/cacao-native_0.98+hg20071001.bb
@@ -0,0 +1,5 @@
+require cacao-native.inc
+
+PR = "r1"
+
+SRC_URI = "http://jalimo.evolvis.org/repository/sources/cacao-${PV}.tar.bz2;md5sum=9ff10c929bd0cbf15909107c1aff7518"
diff --git a/packages/cacao/cacao.inc b/packages/cacao/cacao.inc
index 9315babfb9..cc107abf27 100644
--- a/packages/cacao/cacao.inc
+++ b/packages/cacao/cacao.inc
@@ -1,16 +1,52 @@
-DESCRIPTION = "cacao is a Java Virtual Machine, which uses GNU Classpath as default Java core library"
+DESCRIPTION = "Cacao is a Java Virtual Machine, which uses GNU Classpath as default Java core library"
HOMEPAGE = "http://www.cacaojvm.org/"
LICENSE = "GPL"
PRIORITY = "optional"
SECTION = "interpreters"
-PR = "r1"
-inherit autotools
+DEPENDS = "zlib libtool classpath cacaoh-native virtual/javac-native"
-SRC_URI = "http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-0.98/cacao-${PV}.tar.bz2;md5sum=8b8907c8b925761c9410bcadb9705346"
+# Avoid version number here, otherwise dpkg will expect a package name
+# and cannot be satisfied with a package that provides classpath.
+RDEPENDS = "classpath"
-S = "${WORKDIR}/cacao-${PV}"
+PROVIDES = "cacao virtual/java"
+RPROVIDES_cacao = "java2-runtime"
+
+inherit autotools update-alternatives
+
+EXTRA_OECONF = "\
+ ${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \
+ --enable-debug \
+ --with-cacaoh=${STAGING_BINDIR_NATIVE}/cacaoh-${PV} \
+ --with-classpath-libdir=${STAGING_LIBDIR}/classpath \
+ --with-classpath-includedir=${STAGING_INCDIR}/classpath \
+ --with-classpath-classes=${STAGING_DATADIR}/classpath/glibj.zip \
+ --with-target-classpath-classes=${datadir}/classpath/glibj.zip \
+ --with-vm-zip=${datadir}/cacao/vm.zip \
+ --with-classpath-libdir=${libdir} \
+ "
+
+PACKAGES = "${PN} ${PN}-doc ${PN}-dbg"
+
+FILES_${PN} = "${bindir}/${PN} ${libdir}/lib*.so* ${datadir}/${PN}"
+FILES_${PN}-doc = "${datadir}/man"
+FILES_${PN}-dbg = "${bindir}/.debug ${libdir}/.debug/lib*.so*"
+
+ALTERNATIVE_NAME = "java"
+ALTERNATIVE_LINK = "${bindir}/${ALTERNATIVE_NAME}"
+ALTERNATIVE_PATH = "${bindir}/cacao"
+ALTERNATIVE_PRIORITY = "10"
+
+do_configure_prepend() {
+ # Replaces the placeholder OE_LIBDIR_JNI with the JNI library directory
+ # configured in OE.
+ if [ -e src/vm/properties.c ]; then
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/properties.c
+ fi
+
+ if [ -e src/vm/properties.c ]; then
+ sed -i -e "s|OE_LIBDIR_JNI|${libdir}/jni|" src/vm/vm.c
+ fi
+}
-EXTRA_OECONF = "--disable-debug \
- ${@['','--enable-softfloat'][bb.data.getVar('TARGET_FPU',d,1) == 'soft']} \
- "
diff --git a/packages/cacao/cacao_0.98+hg20071001.bb b/packages/cacao/cacao_0.98+hg20071001.bb
new file mode 100644
index 0000000000..65203189b4
--- /dev/null
+++ b/packages/cacao/cacao_0.98+hg20071001.bb
@@ -0,0 +1,22 @@
+require cacao.inc
+
+PR = "r6"
+
+SRC_URI = "\
+ http://jalimo.evolvis.org/repository/sources/cacao-${PV}.tar.bz2;md5sum=9ff10c929bd0cbf15909107c1aff7518 \
+ file://cacao-0.98+svn-libdir.diff;patch=1 \
+ file://cacao-0.98+svn-classpath_var.patch;patch=1 \
+ file://cacao-0.98+hg-arm-cacheflush-workaround.patch;patch=1 \
+ file://cacao-0.98+hg-attachthread.patch;patch=1 \
+ "
+
+EXTRA_OECONF += "\
+ --enable-annotations \
+ "
+
+# Quirks for Nokia N800:
+# - with mfloat-abi=softfp the runtime fails to run anything
+# - without --enable-softfloat it cannot find files within Jars
+TARGET_CC_ARCH_nokia800 = "-march=armv6j -mtune=arm1136jf-s -mfpu=vfp -mfloat-abi=soft"
+
+EXTRA_OECONF_append_nokia800 = "--enable-softfloat"
diff --git a/packages/cacao/cacaoh-cldc-native_0.98.bb b/packages/cacao/cacaoh-cldc-native_0.98.bb
index 7ea7cad5dd..e2c92cc328 100644
--- a/packages/cacao/cacaoh-cldc-native_0.98.bb
+++ b/packages/cacao/cacaoh-cldc-native_0.98.bb
@@ -1,16 +1,19 @@
+require cacaoh-native.inc
-require cacao.inc
+DEPENDS += "midpath-cldc-native"
-DEPENDS = "ecj-native classpath-minimal-native virtual/cldc-api-1.1-native libtool-native zlib-native"
+SRC_URI = "\
+ http://www.complang.tuwien.ac.at/cacaojvm/download/cacao-${PV}/cacao-${PV}.tar.bz2;md5sum=8b8907c8b925761c9410bcadb9705346 \
+ "
-inherit native
-
-EXTRA_OECONF += "--with-classpath-includedir=${STAGING_INCDIR}/classpath-minimal \
- --enable-jni \
- --enable-java=cldc1.1 \
- --with-classpath=cldc1.1 \
- --with-classpath-classes=${STAGING_DATADIR}/java/cldc1.1.jar \
- "
+EXTRA_OECONF += "\
+ --with-classpath-includedir=${STAGING_INCDIR}/classpath \
+ --enable-jni \
+ --enable-java=cldc1.1 \
+ --with-classpath=cldc1.1 \
+ --with-classpath-classes=${STAGING_DATADIR}/midpath-cldc/midpath-cldc1.1.jar \
+"
+
do_stage() {
- install -m 0755 src/cacaoh/.libs/cacaoh ${STAGING_BINDIR}/
+ install -m 0755 src/cacaoh/.libs/cacaoh ${STAGING_BINDIR}/cacaoh-cldc-${PV}
}
diff --git a/packages/cacao/cacaoh-native.inc b/packages/cacao/cacaoh-native.inc
new file mode 100644
index 0000000000..3e7fdd60c6
--- /dev/null
+++ b/packages/cacao/cacaoh-native.inc
@@ -0,0 +1,27 @@
+DESCRIPTION = "Header generator for Cacao JVM - Needed for cross-compilation builds"
+HOMEPAGE = "http://www.cacaojvm.org/"
+LICENSE = "GPL"
+
+DEPENDS = "libtool-native zlib-native virtual/javac-native classpath-native"
+
+S = "${WORKDIR}/cacao-${PV}"
+
+PR = "r1"
+
+inherit autotools native
+
+EXTRA_OECONF = " \
+ --with-classpath-includedir=${STAGING_INCDIR}/classpath \
+ --with-classpath-classes=${STAGING_DATADIR}/classpath/glibj.zip \
+ "
+
+do_compile() {
+ # Compile the header generator only (and what is needed for it).
+ oe_runmake -C src/toolbox libtoolbox.la
+ oe_runmake -C src/vmcore libvmcore.la
+ oe_runmake -C src/cacaoh cacaoh
+}
+
+do_stage() {
+ install -m 0755 src/cacaoh/.libs/cacaoh ${STAGING_BINDIR}/cacaoh-${PV}
+}
diff --git a/packages/cacao/cacaoh-native_0.98+hg20071001.bb b/packages/cacao/cacaoh-native_0.98+hg20071001.bb
new file mode 100644
index 0000000000..cb552df827
--- /dev/null
+++ b/packages/cacao/cacaoh-native_0.98+hg20071001.bb
@@ -0,0 +1,5 @@
+require cacaoh-native.inc
+
+SRC_URI = "http://jalimo.evolvis.org/repository/sources/cacao-${PV}.tar.bz2;md5sum=9ff10c929bd0cbf15909107c1aff7518"
+
+
diff --git a/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch b/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch
new file mode 100644
index 0000000000..813cb683f6
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch
@@ -0,0 +1,50 @@
+Index: cacao-0.98+hg7750/src/vm/jit/arm/asmpart.S
+===================================================================
+--- cacao-0.98+hg7750.orig/src/vm/jit/arm/asmpart.S 2007-11-28 10:14:51.000000000 +0100
++++ cacao-0.98+hg7750/src/vm/jit/arm/asmpart.S 2007-11-28 10:15:31.000000000 +0100
+@@ -302,35 +302,21 @@
+ * *
+ *******************************************************************************/
+
+-.equ sys_cacheflush,__ARM_NR_cacheflush /* syscall number for cache flushing */
+-
++.equ sys_cacheflush, 0x9f0002
+ asm_cacheflush:
+- add a1, a0, a1
+- mov a2, #0
+-
+-#if defined(__ARM_EABI__)
+- /* According to EABI, the syscall number should be passed via R7,
+- see "http://wiki.debian.org/ArmEabiPort" for additional details. */
+-
+- stmfd sp!, {r7}
+- mov r7, #0x0f0000
+- add r7, r7, #0x000002
+-#endif
++ add a1, a0, a1
++ mov a2, #0
+
+ #if 0
+- /* TWISTI: required on iyonix, maybe a linux-2.4 bug */
+- mov a0, #0x0
+- mov a1, #0xff000000
++ /* TWISTI: required on iyonix, maybe a linux-2.4 bug */
++ /* TODO: repeair this! */
++ /* cacheflush is messed up beyond all repair! */
++ mov a0, #0x0
++ mov a1, #0xff000000
+ #endif
+
+- swi sys_cacheflush
+-
+-#if defined(__ARM_EABI__)
+- ldmfd sp!, {r7}
+-#endif
+-
+- mov pc, lr
+-
++ swi #sys_cacheflush
++ mov pc, lr
+
+ /* disable exec-stacks ********************************************************/
+
diff --git a/packages/cacao/files/cacao-0.98+hg-attachthread.patch b/packages/cacao/files/cacao-0.98+hg-attachthread.patch
new file mode 100644
index 0000000000..cda01bcfb2
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98+hg-attachthread.patch
@@ -0,0 +1,89 @@
+# Makes the JNI function AttachCurrentThread work properly.
+
+Index: cacao-0.98+hg20071001/src/mm/boehm-gc/include/gc.h
+===================================================================
+--- cacao-0.98+hg20071001.orig/src/mm/boehm-gc/include/gc.h 2008-01-15 14:45:41.000000000 +0100
++++ cacao-0.98+hg20071001/src/mm/boehm-gc/include/gc.h 2008-01-15 14:46:30.000000000 +0100
+@@ -905,6 +905,8 @@
+ /* in returned list. */
+ extern void GC_thr_init GC_PROTO((void));/* Needed for Solaris/X86 */
+
++extern void GC_thr_init_foreign GC_PROTO((void));/* Needed for Solaris/X86 */
++
+ #endif /* THREADS && !SRC_M3 */
+
+ #if defined(GC_WIN32_THREADS) && !defined(__CYGWIN32__) && !defined(__CYGWIN__)
+Index: cacao-0.98+hg20071001/src/mm/boehm-gc/pthread_support.c
+===================================================================
+--- cacao-0.98+hg20071001.orig/src/mm/boehm-gc/pthread_support.c 2008-01-15 14:45:41.000000000 +0100
++++ cacao-0.98+hg20071001/src/mm/boehm-gc/pthread_support.c 2008-01-15 14:46:30.000000000 +0100
+@@ -864,6 +864,27 @@
+ }
+ #endif /* GC_NETBSD_THREADS */
+
++void GC_thr_init_foreign()
++{
++# ifndef GC_DARWIN_THREADS
++ int dummy;
++# endif
++ GC_thread t;
++ LOCK();
++
++ /* Add the initial thread, so we can stop it. */
++ t = GC_new_thread(pthread_self());
++# ifdef GC_DARWIN_THREADS
++ t -> stop_info.mach_thread = mach_thread_self();
++# else
++ t -> stop_info.stack_ptr = (ptr_t)(&dummy);
++# endif
++ t -> flags = DETACHED;
++
++ UNLOCK();
++
++}
++
+ /* We hold the allocation lock. */
+ void GC_thr_init()
+ {
+Index: cacao-0.98+hg20071001/src/mm/boehm.c
+===================================================================
+--- cacao-0.98+hg20071001.orig/src/mm/boehm.c 2008-01-15 14:45:41.000000000 +0100
++++ cacao-0.98+hg20071001/src/mm/boehm.c 2008-01-15 14:46:30.000000000 +0100
+@@ -108,6 +108,10 @@
+ GC_expand_hp(heapstartsize - heapcurrentsize);
+ }
+
++void gc_init_foreign()
++{
++ GC_thr_init_foreign();
++}
+
+ static void gc_ignore_warnings(char *msg, GC_word arg)
+ {
+Index: cacao-0.98+hg20071001/src/mm/gc-common.h
+===================================================================
+--- cacao-0.98+hg20071001.orig/src/mm/gc-common.h 2008-01-15 14:45:41.000000000 +0100
++++ cacao-0.98+hg20071001/src/mm/gc-common.h 2008-01-15 14:46:30.000000000 +0100
+@@ -74,6 +74,7 @@
+ void gc_finalize_all(void);
+ void *gc_out_of_memory(size_t bytes_requested);
+
++void gc_init_foreign();
+
+ /* inlined functions **********************************************************/
+
+Index: cacao-0.98+hg20071001/src/threads/native/threads.c
+===================================================================
+--- cacao-0.98+hg20071001.orig/src/threads/native/threads.c 2008-01-15 14:45:41.000000000 +0100
++++ cacao-0.98+hg20071001/src/threads/native/threads.c 2008-01-15 16:01:22.000000000 +0100
+@@ -1392,7 +1392,10 @@
+
+ /* thread is completely initialized */
+
++ gc_init_foreign();
++
+ threads_thread_state_runnable(thread);
++ threads_set_current_threadobject(thread);
+
+ DEBUGTHREADS("attaching", thread);
+
diff --git a/packages/cacao/files/cacao-0.98+svn-classpath_var.patch b/packages/cacao/files/cacao-0.98+svn-classpath_var.patch
new file mode 100644
index 0000000000..255281d386
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98+svn-classpath_var.patch
@@ -0,0 +1,56 @@
+Index: cacao-trunk/src/vm/properties.c
+===================================================================
+--- cacao-trunk.orig/src/vm/properties.c 2007-08-31 13:28:53.000000000 +0200
++++ cacao-trunk/src/vm/properties.c 2007-09-03 00:36:14.000000000 +0200
+@@ -294,14 +294,14 @@
+ len =
+ strlen(CACAO_VM_ZIP) +
+ strlen(":") +
+- strlen(CLASSPATH_CLASSES) +
++ strlen(TARGET_CLASSPATH_CLASSES) +
+ strlen("0");
+
+ boot_class_path = MNEW(char, len);
+
+ strcpy(boot_class_path, CACAO_VM_ZIP);
+ strcat(boot_class_path, ":");
+- strcat(boot_class_path, CLASSPATH_CLASSES);
++ strcat(boot_class_path, TARGET_CLASSPATH_CLASSES);
+
+ # elif defined(WITH_CLASSPATH_SUN)
+
+Index: cacao-trunk/configure.ac
+===================================================================
+--- cacao-trunk.orig/configure.ac 2007-08-31 13:22:03.000000000 +0200
++++ cacao-trunk/configure.ac 2007-08-31 13:30:44.000000000 +0200
+@@ -851,6 +851,7 @@
+ AC_CHECK_WITH_CLASSPATH
+ AC_CHECK_WITH_CLASSPATH_PREFIX
+ AC_CHECK_WITH_CLASSPATH_CLASSES
++AC_CHECK_WITH_TARGET_CLASSPATH_CLASSES
+ AC_CHECK_WITH_CLASSPATH_LIBDIR
+ AC_CHECK_WITH_CLASSPATH_INCLUDEDIR
+
+Index: cacao-trunk/m4/classpath.m4
+===================================================================
+--- cacao-trunk.orig/m4/classpath.m4 2007-08-31 13:22:21.000000000 +0200
++++ cacao-trunk/m4/classpath.m4 2007-08-31 13:30:55.000000000 +0200
+@@ -98,6 +98,18 @@
+ AC_SUBST(CLASSPATH_CLASSES)
+ ])
+
++dnl where are Java core library classes installed on the target
++
++AC_DEFUN([AC_CHECK_WITH_TARGET_CLASSPATH_CLASSES],[
++AC_MSG_CHECKING(where Java core library classes are installed on the target)
++AC_ARG_WITH([target-classpath-classes],
++ [AS_HELP_STRING(--with-target-classpath-classes=<path>,path to Java core library classes (includes the name of the file and may be flat) [[default=/usr/local/classpath/share/classpath/glibj.zip]])],
++ [TARGET_CLASSPATH_CLASSES=${withval}],
++ [TARGET_CLASSPATH_CLASSES=${CLASSPATH_PREFIX}/share/classpath/glibj.zip])
++AC_MSG_RESULT(${TARGET_CLASSPATH_CLASSES})
++AC_DEFINE_UNQUOTED([TARGET_CLASSPATH_CLASSES], "${TARGET_CLASSPATH_CLASSES}", [Java core library classes on the target])
++AC_SUBST(TARGET_CLASSPATH_CLASSES)
++])
+
+ dnl where are Java core library native libraries installed
+
diff --git a/packages/cacao/files/cacao-0.98+svn-libdir.diff b/packages/cacao/files/cacao-0.98+svn-libdir.diff
new file mode 100644
index 0000000000..f5cf9ba5a1
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98+svn-libdir.diff
@@ -0,0 +1,30 @@
+Index: cacao-trunk/src/vm/properties.c
+===================================================================
+--- cacao-trunk.orig/src/vm/properties.c 2007-08-31 13:20:41.000000000 +0200
++++ cacao-trunk/src/vm/properties.c 2007-09-04 14:54:19.000000000 +0200
+@@ -210,15 +210,22 @@
+
+ # if defined(WITH_CLASSPATH_GNU)
+
+- boot_library_path = CLASSPATH_LIBDIR"/classpath";
++ boot_library_path = CLASSPATH_LIBDIR"/classpath:OE_LIBDIR_JNI";
+
+ # elif defined(WITH_CLASSPATH_SUN)
+
+- boot_library_path = CLASSPATH_LIBDIR;
++ boot_library_path = CLASSPATH_LIBDIR":OE_LIBDIR_JNI";
+
+ # elif defined(WITH_CLASSPATH_CLDC1_1)
+
+- /* No boot_library_path required. */
++ /* No boot_library_path required.
++ Well, don't be that strict on Debian-like
++ environments. Setting this to /usr/lib/jni
++ makes it unneccessary to fumble with
++ LD_LIBRARY_PATH to get things like MIDPath
++ running.
++ */
++ boot_library_path = "OE_LIBDIR_JNI";
+
+ # else
+ # error unknown classpath configuration
diff --git a/packages/cacao/files/cacao-0.98-initial.patch b/packages/cacao/files/cacao-0.98-initial.patch
new file mode 100644
index 0000000000..30b6d147e8
--- /dev/null
+++ b/packages/cacao/files/cacao-0.98-initial.patch
@@ -0,0 +1,45 @@
+Index: cacao-0.98/configure.ac
+===================================================================
+--- cacao-0.98.orig/configure.ac 2007-12-19 22:07:55.000000000 +0100
++++ cacao-0.98/configure.ac 2007-12-19 22:08:02.000000000 +0100
+@@ -27,7 +27,7 @@
+ dnl Process this file with autoconf to produce a configure script.
+
+
+-AC_INIT(cacao, 0.98, cacao@cacaojvm.org)
++AC_INIT(cacao-initial, 0.98, cacao@cacaojvm.org)
+ AC_CONFIG_SRCDIR(src/cacao/cacao.c)
+ AC_CANONICAL_HOST
+ AC_PREREQ(2.59)
+Index: cacao-0.98/src/vm/vm.c
+===================================================================
+--- cacao-0.98.orig/src/vm/vm.c 2007-12-19 22:31:19.000000000 +0100
++++ cacao-0.98/src/vm/vm.c 2007-12-19 22:32:36.000000000 +0100
+@@ -623,7 +623,7 @@
+ #else
+ puts(" java.boot.class.path : "CLASSPATH_CLASSES"");
+ #endif
+- puts(" gnu.classpath.boot.library.path: "CLASSPATH_LIBDIR"/classpath\n");
++ puts(" gnu.classpath.boot.library.path: "CLASSPATH_LIBDIR"/classpath-initial\n");
+
+ puts("Runtime variables:\n");
+ printf(" maximum heap size : %d\n", opt_heapmaxsize);
+@@ -828,15 +828,15 @@
+
+ /* and finally set the path to GNU Classpath libraries */
+
+- len = strlen(cacao_prefix) + strlen("/lib/classpath") + strlen("0");
++ len = strlen(cacao_prefix) + strlen("/lib/classpath-initial") + strlen("0");
+
+ classpath_libdir = MNEW(char, len);
+ strcpy(classpath_libdir, cacao_prefix);
+- strcat(classpath_libdir, "/lib/classpath");
++ strcat(classpath_libdir, "/lib/classpath-initial");
+ #else
+ cacao_prefix = CACAO_PREFIX;
+ cacao_libjvm = CACAO_LIBDIR"/libjvm";
+- classpath_libdir = CLASSPATH_LIBDIR"/classpath";
++ classpath_libdir = CLASSPATH_LIBDIR"/classpath-initial";
+ #endif
+
+ /* set the bootclasspath */
diff --git a/packages/classpath/classpath-initial_0.93.bb b/packages/classpath/classpath-initial_0.93.bb
new file mode 100644
index 0000000000..9e303f6eba
--- /dev/null
+++ b/packages/classpath/classpath-initial_0.93.bb
@@ -0,0 +1,28 @@
+# No later version of Classpath may be used because this is the latest that can be compiled
+# by jikes!
+
+require classpath-native.inc
+
+DESCRIPTION="Java1.4-compatible GNU Classpath variant that is used as bootclasspath for jikes-native."
+
+PR = "r0"
+
+DEPENDS = "zip-native fastjar-native jikes-native"
+
+EXTRA_OECONF = "\
+ --with-jikes=jikes \
+ --with-fastjar=fastjar \
+ --with-glibj \
+ --disable-local-sockets \
+ --disable-alsa \
+ --disable-gconf-peer \
+ --disable-gtk-peer \
+ --disable-plugin \
+ --disable-dssi \
+ --disable-examples \
+ --disable-tools \
+ --with-glibj-dir=${STAGING_DATADIR}/classpath-initial \
+ --with-native-libdir=${STAGING_LIBDIR}/classpath-initial \
+ --includedir=${STAGING_INCDIR}/classpath-initial \
+ "
+
diff --git a/packages/classpath/classpath-minimal_0.96.1.bb b/packages/classpath/classpath-minimal_0.96.1.bb
new file mode 100644
index 0000000000..0597274915
--- /dev/null
+++ b/packages/classpath/classpath-minimal_0.96.1.bb
@@ -0,0 +1,17 @@
+require classpath.inc
+
+PR = "r3"
+
+SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
+
+PROVIDES = "${PN} classpath"
+
+EXTRA_OECONF += "\
+ --enable-local-sockets \
+ --disable-alsa \
+ --disable-gconf-peer \
+ --disable-gtk-peer \
+ --disable-plugin \
+ --disable-dssi \
+ --disable-examples \
+ "
diff --git a/packages/classpath/classpath-native.inc b/packages/classpath/classpath-native.inc
new file mode 100644
index 0000000000..bb5abaf178
--- /dev/null
+++ b/packages/classpath/classpath-native.inc
@@ -0,0 +1,32 @@
+DESCRIPTION = "GNU Classpath standard Java libraries - For native Java-dependent programs"
+HOMEPAGE = "http://www.gnu.org/software/classpath/"
+LICENSE = "Classpath"
+
+S = "${WORKDIR}/classpath-${PV}"
+
+SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz"
+
+DEPENDS = "ecj-initial fastjar-native zip-native"
+
+inherit autotools native
+
+EXTRA_OECONF = "\
+ --with-glibj \
+ --with-ecj=${STAGING_BINDIR_NATIVE}/ecj-initial \
+ --with-fastjar=fastjar \
+ --enable-local-sockets \
+ --disable-alsa \
+ --disable-gconf-peer \
+ --disable-gtk-peer \
+ --disable-plugin \
+ --disable-dssi \
+ --enable-examples \
+ --enable-tools \
+ --includedir=${STAGING_INCDIR}/classpath \
+ --with-vm=java \
+ "
+
+do_stage() {
+ oe_runmake install
+}
+
diff --git a/packages/classpath/classpath-native_0.96.1.bb b/packages/classpath/classpath-native_0.96.1.bb
new file mode 100644
index 0000000000..e7d1d07a81
--- /dev/null
+++ b/packages/classpath/classpath-native_0.96.1.bb
@@ -0,0 +1,6 @@
+require classpath-native.inc
+
+PR = "r1"
+
+SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
+
diff --git a/packages/classpath/classpath.inc b/packages/classpath/classpath.inc
index d9498c99d5..97c081af89 100644
--- a/packages/classpath/classpath.inc
+++ b/packages/classpath/classpath.inc
@@ -3,28 +3,62 @@ HOMEPAGE = "http://www.gnu.org/software/classpath/"
SECTION = "libs"
PRIORITY = "optional"
LICENSE = "Classpath"
-PROVIDES = "classpath"
-RPROVIDES = "classpath"
+PBN = "classpath"
-SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz \
- file://gconf_version.patch;patch=1 \
- file://fix-endian-arm-floats.patch;patch=1"
+DEPENDS = "virtual/javac-native fastjar-native zip-native"
+RPROVIDES = ""
+
+RDEPENDS_${PN} = "${PBN}-common (>= ${PV})"
+
+RPROVIDES_${PN} = "${PBN}"
+RPROVIDES_${PN}-gtk = "${PBN}-awt"
+
+SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz"
+
+S = "${WORKDIR}/${PBN}-${PV}"
+
+EXTRA_OECONF = "\
+ --with-glibj \
+ --with-ecj=javac \
+ --with-fastjar=fastjar \
+ --includedir=${includedir}/classpath \
+ --with-vm=java \
+ "
inherit autotools
do_stage() {
install -d ${STAGING_INCDIR}/classpath
- install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
+ install -m 0644 include/jni* ${STAGING_INCDIR}/classpath
+ install -m 0644 include/jni_md.h ${STAGING_INCDIR}/classpath/
+
+ install -d ${STAGING_DATADIR}/classpath
+ install -m 0644 lib/glibj.zip ${STAGING_DATADIR}/classpath
}
do_install() {
autotools_do_install
- mv ${D}${libdir}/security ${D}${libdir}/${PN}
+ mv ${D}${libdir}/security ${D}${libdir}/${PBN}
}
-PACKAGES =+ "classpath-common classpath-examples classpath-tools"
-FILES_classpath-common += "${datadir}/classpath/glibj.zip"
-FILES_classpath-examples += "${datadir}/classpath/examples"
-FILES_classpath-tools += "${datadir}/classpath/tools.zip ${datadir}/classpath/tools"
-FILES_classpath-dev += "${libdir}/*.so"
-FILES_classpath-dbg += "${libdir}/classpath/.debug"
+PACKAGES =+ "${PBN}-common ${PN}-examples \
+ ${PN}-tools ${PN}-tools-doc \
+ ${PN}-gtk ${PN}-gconf "
+
+FILES_${PN}-dev += "${libdir}/${PBN}/*.la ${incdir}/${PBN}"
+
+FILES_${PBN}-common = "${datadir}/${PBN}/glibj.zip ${libdir}/logging.properties ${libdir}/${PBN}/security"
+FILES_${PN}-examples = "${datadir}/${PBN}/examples"
+
+FILES_${PN}-tools = "${datadir}/${PBN}/tools.zip ${bindir}"
+FILES_${PN}-tools-doc = "${mandir}"
+
+FILES_${PN}-dbg += "${libdir}/${PBN}/.debug"
+FILES_${PN}-doc = "${infodir}"
+
+# gcjwebplugin - not built yet
+#FILES_${PN}-gcjwebplugin = "${libdir}/${PBN}/libgcjwebplugin.so"
+FILES_${PN}-gtk = "${libdir}/${PBN}/libgtkpeer.so ${libdir}/${PBN}/libjawt.so"
+FILES_${PN}-gconf = "${libdir}/${PBN}/libgconfpeer.so"
+FILES_${PN} = "${libdir}/${PBN}/lib*so*"
+
diff --git a/packages/classpath/classpath_0.95.bb b/packages/classpath/classpath_0.95.bb
new file mode 100644
index 0000000000..6b167a2d47
--- /dev/null
+++ b/packages/classpath/classpath_0.95.bb
@@ -0,0 +1,20 @@
+require classpath.inc
+
+SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
+
+PR = "r2"
+
+DEPENDS += "gtk+ gconf libxtst"
+
+EXTRA_OECONF += "\
+ --disable-alsa \
+ --disable-dssi \
+ --disable-qt4-peer \
+ --disable-plugin \
+ --enable-gconf-peer \
+ --enable-gtk-peer \
+ --enable-local-sockets \
+ --with-vm=java \
+ "
+
+
diff --git a/packages/classpath/classpath_0.96.1.bb b/packages/classpath/classpath_0.96.1.bb
new file mode 100644
index 0000000000..6b167a2d47
--- /dev/null
+++ b/packages/classpath/classpath_0.96.1.bb
@@ -0,0 +1,20 @@
+require classpath.inc
+
+SRC_URI += "file://gjar-prefix-patch.diff;patch=1;pnum=0"
+
+PR = "r2"
+
+DEPENDS += "gtk+ gconf libxtst"
+
+EXTRA_OECONF += "\
+ --disable-alsa \
+ --disable-dssi \
+ --disable-qt4-peer \
+ --disable-plugin \
+ --enable-gconf-peer \
+ --enable-gtk-peer \
+ --enable-local-sockets \
+ --with-vm=java \
+ "
+
+
diff --git a/packages/classpath/files/gjar-prefix-patch.diff b/packages/classpath/files/gjar-prefix-patch.diff
new file mode 100644
index 0000000000..64b262cb41
--- /dev/null
+++ b/packages/classpath/files/gjar-prefix-patch.diff
@@ -0,0 +1,40 @@
+Index: tools/gnu/classpath/tools/jar/Entry.java
+===================================================================
+RCS file: /sources/classpath/classpath/tools/gnu/classpath/tools/jar/Entry.java,v
+retrieving revision 1.1
+diff -u -r1.1 Entry.java
+--- tools/gnu/classpath/tools/jar/Entry.java 8 May 2006 18:38:20 -0000 1.1
++++ tools/gnu/classpath/tools/jar/Entry.java 10 Dec 2007 22:20:05 -0000
+@@ -1,5 +1,5 @@
+ /* Entry.java - represent a single file to write to a jar
+- Copyright (C) 2006 Free Software Foundation, Inc.
++ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This file is part of GNU Classpath.
+
+@@ -49,12 +49,22 @@
+ public Entry(File file, String name)
+ {
+ this.file = file;
+- this.name = name;
++
++ /* Removes any './' prefixes automatically. Those caused trouble
++ * in (boot) classpath use-cases. See #32516.
++ */
++ int start = 0;
++ while (name.length() > start + 2
++ && name.codePointAt(start) == '.'
++ && name.codePointAt(start + 1) == File.separatorChar)
++ start += 2;
++
++ this.name = name.substring(start);
+ }
+
+ public Entry(File file)
+ {
+- this.file = file;
+- this.name = file.toString();
++ this(file, file.toString());
+ }
++
+ }
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/.mtn2git_empty b/packages/dtnrg/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/.mtn2git_empty
+++ b/packages/dtnrg/.mtn2git_empty
diff --git a/packages/dtnrg/dtn_2.5.0.bb b/packages/dtnrg/dtn_2.5.0.bb
new file mode 100644
index 0000000000..5975a29e7c
--- /dev/null
+++ b/packages/dtnrg/dtn_2.5.0.bb
@@ -0,0 +1,67 @@
+DESCRIPTION = "Delay Tolerant Networking Package"
+HOMEPAGE = "http://www.dtnrg.org/wiki"
+SECTION = "libs"
+DEPENDS = "db openssl python-native xerces-c"
+LICENSE = "Apache"
+SRC_URI = "http://www.dtnrg.org/docs/code/dtn_${PV}.tgz"
+PR = "r2"
+
+inherit autotools
+
+EXTRA_OECONF = "\
+ --with-python=${STAGING_BINDIR_NATIVE}/python \
+ --with-db=${STAGING_DIR} \
+ --with-tcl=${STAGING_DIR} \
+ --without-google-perftools \
+ --without-bluez \
+ --without-bonjour \
+ --with-expat=${STAGING_DIR} \
+ --with-xerces-c=${STAGING_DIR} \
+ --without-tclreadline \
+ --with-zlib=${STAGING_DIR} \
+ --without-xsd-tool \
+ --with-db=${STAGING_DIR} \
+ --enable-ecl \
+ --enable-edp \
+ --without-mysql \
+ --without-postgres \
+ --with-openssl=${STAGING_DIR} \
+"
+
+def dtn_python_dir(d):
+ import os, bb
+ staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 )
+ if os.path.exists( "%s/python2.5" % staging_incdir ): return "python2.5"
+ if os.path.exists( "%s/python2.4" % staging_incdir ): return "python2.4"
+ if os.path.exists( "%s/python2.3" % staging_incdir ): return "python2.3"
+ raise "No Python in STAGING_INCDIR. Forgot to build python-native ?"
+
+PYTHON_DIR = "${@dtn_python_dir(d)}"
+
+# use this syntax once everyone has at least bitbake 1.8.9
+#export BUILD_SYS
+#export HOST_SYS
+
+export BUILD_SYS:="${BUILD_SYS}"
+export HOST_SYS:="${HOST_SYS}"
+
+do_configure_prepend() {
+ for i in aclocal/*.ac oasys/aclocal/*.ac; do
+ install -m 0644 $i ${STAGING_DATADIR}/aclocal/`basename $i`.m4
+ done
+ autotools_do_configure
+}
+
+do_install_append() {
+ cd applib/python
+ INCDIR=../.. LIBDIR=.. VERSION=${PV} python setup.py install --prefix=${D}/${prefix} --install-data=${D}/${datadir}
+}
+
+PACKAGES =+ "${PN}-lib"
+FILES_${PN}-lib = "${libdir}/*.so*"
+PACKAGES += "python-dtn"
+DESCRIPTION_python-dtn = "Python bindings to the DTN API"
+PR_python-dtn = "ml2"
+FILES_python-dtn = "${libdir}/${PYTHON_DIR}"
+RDEPENDS_python-dtn = "python-core dtn-lib"
+FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
diff --git a/packages/quilt/quilt-0.39/.mtn2git_empty b/packages/e17/edje-viewer/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/quilt/quilt-0.39/.mtn2git_empty
+++ b/packages/e17/edje-viewer/.mtn2git_empty
diff --git a/packages/e17/edje-viewer/no-minimal-size.patch b/packages/e17/edje-viewer/no-minimal-size.patch
new file mode 100644
index 0000000000..944447c03f
--- /dev/null
+++ b/packages/e17/edje-viewer/no-minimal-size.patch
@@ -0,0 +1,27 @@
+--- A/src/bin/etk_gui.c 2008-01-13 20:08:45.000000000 +0100
++++ B/src/bin/etk_gui.c.patched 2008-01-13 20:50:06.000000000 +0100
+@@ -147,21 +147,21 @@
+ etk_tree_col_model_add(col2, etk_tree_model_checkbox_new());
+ etk_tree_build(ETK_TREE(gui->tree));
+ etk_tree_col_sort_set(col2, gui_visibility_col_sort_cb, NULL);
+- etk_widget_size_request_set(gui->tree, 300, 0);
++ etk_widget_size_request_set(gui->tree, 0, 0);
+ etk_signal_connect_by_code(ETK_WIDGET_KEY_DOWN_SIGNAL,
+ ETK_OBJECT(gui->tree),
+ ETK_CALLBACK(_gui_tree_key_down_cb), gui);
+ etk_paned_child1_set(ETK_PANED(paned), gui->tree, ETK_FALSE);
+
+ gui->canvas = etk_canvas_new();
+- etk_widget_size_request_set(gui->canvas, 500, 500);
++ etk_widget_size_request_set(gui->canvas, 50, 50);
+ etk_object_notification_callback_add(ETK_OBJECT(gui->canvas), "geometry",
+ canvas_resize_cb, NULL);
+ etk_paned_child2_set(ETK_PANED(paned), gui->canvas, ETK_TRUE);
+
+ gui->output = etk_tree_new();
+ etk_tree_headers_visible_set(ETK_TREE(gui->output), ETK_TRUE);
+- col = etk_tree_col_new(ETK_TREE(gui->output), _("Output"), 200, 0.0);
++ col = etk_tree_col_new(ETK_TREE(gui->output), _("Output"), 100, 0.0);
+ etk_tree_col_model_add(col, etk_tree_model_text_new());
+ etk_tree_col_expand_set(col, ETK_TRUE);
+ etk_tree_build(ETK_TREE(gui->output));
diff --git a/packages/e17/edje-viewer_cvs.bb b/packages/e17/edje-viewer_cvs.bb
index 1a15746ca4..88d0df6016 100644
--- a/packages/e17/edje-viewer_cvs.bb
+++ b/packages/e17/edje-viewer_cvs.bb
@@ -2,11 +2,12 @@ DESCRIPTION = "Edje_Viewer is just that."
DEPENDS = "etk"
LICENSE = "MIT"
PV = "0.0.0+cvs${SRCDATE}"
-PR = "r0"
+PR = "r3"
inherit e
-SRC_URI = "${E_CVS};module=e17/apps/edje_viewer"
+SRC_URI = "${E_CVS};module=e17/apps/edje_viewer \
+ file://no-minimal-size.patch;patch=1"
S = "${WORKDIR}/edje_viewer"
FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir} ${sysconfdir} ${sbindir}"
diff --git a/packages/e17/enna_svn.bb b/packages/e17/enna_cvs.bb
index 49e1caeab0..7f2c6eb632 100644
--- a/packages/e17/enna_svn.bb
+++ b/packages/e17/enna_cvs.bb
@@ -2,15 +2,14 @@ DESCRIPTION = "Enna is a media center application based on EFL"
LICENSE = "GPL"
DEPENDS = "curl dbus eet evas edje ecore edbus emotion libmusicbrainz libxml2 taglibc"
SECTION = "x11/multimedia"
-PV = "0.2.0+svn${SRCDATE}"
+PV = "0.2.0+cvs${SRCDATE}"
inherit e
-SRC_URI = "svn://enna.svn.sourceforge.net/svnroot/enna/trunk;module=enna;proto=http \
+SRC_URI = "${E_CVS};module=misc/enna \
file://locale-is-broken.patch;patch=1"
S = "${WORKDIR}/enna"
do_configure_prepend() {
touch po/Makefile.in.in
}
-
diff --git a/packages/ecj/ecj-bootstrap-native_3.3.bb b/packages/ecj/ecj-bootstrap-native_3.3.bb
new file mode 100644
index 0000000000..bd4347457c
--- /dev/null
+++ b/packages/ecj/ecj-bootstrap-native_3.3.bb
@@ -0,0 +1,38 @@
+# ECJ as a bootstrap compiler is a drop-in replacement for Sun's javac. It offers no more
+# and no less features.
+#
+# Since the VM running the compiler has no effect on the produced bytecode this recipe
+# uses the jar created by ecj-initial and creates a start script that runs it with a different
+# VM.
+
+DESCRIPTION = "JDT Core Batch Compiler - Bootstrap variant"
+HOMEPAGE = "http://www.eclipse.org/"
+SECTION = "devel"
+PRIORITY = "optional"
+LICENSE = "EPL"
+
+DEPENDS = "ecj-initial virtual/java-native"
+
+PROVIDES = "virtual/javac-native"
+
+SRC_URI = "file://ecj.in"
+
+S = "${WORKDIR}"
+
+JAR = "ecj-bootstrap-${PV}.jar"
+
+inherit native
+
+do_compile() {
+ # Create the start script
+ echo "#!/bin/sh" > ecj-bootstrap
+ echo "ECJ_JAR=${STAGING_DATADIR}/java/${JAR}" >> ecj-bootstrap
+ echo "RUNTIME=java" >> ecj-bootstrap
+ cat ecj.in >> ecj-bootstrap
+}
+
+do_stage() {
+ install -d ${STAGING_BINDIR}
+ install -m 755 ${S}/ecj-bootstrap ${STAGING_BINDIR}
+ install -m 755 ${S}/ecj-bootstrap ${STAGING_BINDIR}/javac
+}
diff --git a/packages/ecj/ecj-initial_3.3.bb b/packages/ecj/ecj-initial_3.3.bb
new file mode 100644
index 0000000000..7b65daef99
--- /dev/null
+++ b/packages/ecj/ecj-initial_3.3.bb
@@ -0,0 +1,84 @@
+# ECJ as a bootstrap compiler is a drop-in replacement for Sun's javac. It offers no more
+# and no less features.
+
+# This variant runs on the initial (not Java5-compatible runtime).
+
+DESCRIPTION = "JDT Core Batch Compiler - Bootstrap variant"
+HOMEPAGE = "http://www.eclipse.org/"
+LICENSE = "EPL"
+
+DEPENDS = "fastjar-native jikes-initial virtual/java-initial"
+
+SRC_URI = "\
+ http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.3-200706251500/ecjsrc.zip \
+ file://ecj.in \
+ "
+
+S = "${WORKDIR}"
+
+inherit native
+
+JAR = "ecj-bootstrap-${PV}.jar"
+
+do_unpackpost() {
+ if [ ! -d source ]; then
+ mkdir source
+ fi
+
+ if [ ! -d build ]; then
+ mkdir build
+ fi
+
+ # Remove crap.
+ rm about.html build.xml
+ rm -rf META-INF
+
+ # Move source into separate subdir.
+ mv org source/
+
+ # Remove stuff unneeded for the bootstrap compiler.
+ rm -rf source/org/eclipse/jdt/internal/compiler/apt
+ rm -rf source/org/eclipse/jdt/internal/compiler/tool
+ rm -rf source/org/eclipse/jdt/internal/antadapter
+ rm source/org/eclipse/jdt/core/JDTCompilerAdapter.java
+
+ # Make a copy of the remaining source to get the embedded
+ # resources.
+ cp -r source/org build/
+
+ # Remove source code and other stuff.
+ find build -name '*.java' -exec rm -f {} \;
+ find build -name '*.html' -exec rm -f {} \;
+}
+
+addtask unpackpost after do_unpack before do_patch
+
+do_compile() {
+ find source -name '*.java' > sourcefiles
+ split -l 25 sourcefiles ecj-sources.
+
+ # Compiling in place is done because the sources contain
+ # property files which need to be available at runtime.
+ for list in `find . -name 'ecj-sources.*'`; do
+ echo "building files in $list ...";
+ echo jikes-initial -d build -source 1.4 -sourcepath source `cat $list`;
+ jikes-initial \
+ -d build -source 1.4 -sourcepath source `cat $list`;
+ done
+
+ fastjar -c -C build . -f ${JAR}
+
+ # Create the start script
+ echo "#!/bin/sh" > ecj-initial
+ echo "ECJ_JAR=${STAGING_DATADIR}/java/${JAR}" >> ecj-initial
+ echo "RUNTIME=java-initial" >> ecj-initial
+ cat ecj.in >> ecj-initial
+}
+
+do_stage() {
+ install -d ${STAGING_DATADIR}/java
+ install -m 755 ${S}/${JAR} ${STAGING_DATADIR}/java
+
+ install -d ${STAGING_BINDIR}
+ install -m 755 ${S}/ecj-initial ${STAGING_BINDIR}
+}
diff --git a/packages/ecj/ecj-native_3.2.2.bb b/packages/ecj/ecj-native_3.2.2.bb
deleted file mode 100644
index 8afa2653ca..0000000000
--- a/packages/ecj/ecj-native_3.2.2.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "JDT Core Batch Compiler"
-HOMEPAGE = "http://www.eclipse.org/"
-PRIORITY = "optional"
-SECTION = "devel"
-LICENSE = "EPL"
-PR = "r0"
-
-inherit native
-
-SRC_URI = "http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.2.2-200702121330/ecj.jar \
- file://ecj.sh"
-
-do_stage() {
- install -d ${STAGING_BINDIR_NATIVE}
- install -m 755 ${S}/../ecj.jar ${STAGING_BINDIR_NATIVE}
- install -m 755 ${S}/../ecj.sh ${STAGING_BINDIR_NATIVE}/ecj
-}
diff --git a/packages/ecj/ecj-native_3.3.bb b/packages/ecj/ecj-native_3.3.bb
deleted file mode 100644
index ff2eb5f49e..0000000000
--- a/packages/ecj/ecj-native_3.3.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "JDT Core Batch Compiler"
-HOMEPAGE = "http://www.eclipse.org/"
-PRIORITY = "optional"
-SECTION = "devel"
-LICENSE = "EPL"
-PR = "r0"
-
-inherit native
-
-SRC_URI = "http://mirrors.ibiblio.org/pub/mirrors/eclipse/eclipse/downloads/drops/R-3.3-200706251500/ecj.jar \
- file://ecj.sh"
-
-do_stage() {
- install -d ${STAGING_BINDIR_NATIVE}
- install -m 755 ${S}/../ecj.jar ${STAGING_BINDIR_NATIVE}
- install -m 755 ${S}/../ecj.sh ${STAGING_BINDIR_NATIVE}/ecj
-}
diff --git a/packages/ecj/files/ecj.in b/packages/ecj/files/ecj.in
new file mode 100755
index 0000000000..2099991cef
--- /dev/null
+++ b/packages/ecj/files/ecj.in
@@ -0,0 +1 @@
+${RUNTIME} -Xmx512m -cp ${ECJ_JAR} org.eclipse.jdt.internal.compiler.batch.Main ${1+"$@"}
diff --git a/packages/ecj/files/ecj.sh b/packages/ecj/files/ecj.sh
deleted file mode 100644
index 75aa2c2287..0000000000
--- a/packages/ecj/files/ecj.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-java -Xmx512m -jar $0.jar "$@"
diff --git a/packages/efl1/ecore-native_cvs.bb b/packages/efl1/ecore-native_cvs.bb
index 92a30397e1..70d9490b50 100644
--- a/packages/efl1/ecore-native_cvs.bb
+++ b/packages/efl1/ecore-native_cvs.bb
@@ -1,7 +1,7 @@
require ecore.inc
inherit native
DEPENDS = "eet-native evas-native"
-PR = "r2"
+PR = "r0"
EXTRA_OECONF = "\
--enable-ecore-txt \
diff --git a/packages/efl1/ecore.inc b/packages/efl1/ecore.inc
index b71a4b7582..eacde2d012 100644
--- a/packages/efl1/ecore.inc
+++ b/packages/efl1/ecore.inc
@@ -2,17 +2,13 @@ DESCRIPTION = "Ecore is the core event abstraction layer for the enlightenment \
foundation libraries. It makes makes doing selections, drag and drop, event loops, \
timeouts and idle handlers fast, optimized, and convenient."
LICENSE = "MIT"
-DEPENDS = "curl directfb eet evas tslib"
+DEPENDS = "curl eet evas tslib"
# optional
-# DEPENDS += "openssl virtual/libiconv"
+# DEPENDS += "directfb libsdl-x11 openssl virtual/libiconv"
PV = "0.9.9.041+cvs${SRCDATE}"
inherit efl_library
-# SRC_URI += "file://configure.patch;patch=1 \
-# file://fix-tslib-configure.patch;patch=1 \
-# file://fix-directfb-include.patch;patch=1"
-
SRC_URI += "file://fix-directfb-include.patch;patch=1"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ecore"
@@ -26,6 +22,8 @@ PACKAGES += "\
${PN}-evas \
${PN}-fb \
${PN}-file \
+ ${PN}-imf \
+ ${PN}-imf-evas \
${PN}-ipc \
${PN}-job \
${PN}-txt \
@@ -40,6 +38,8 @@ FILES_${PN}-sdl = "${libdir}/libecore_sdl.so.*"
FILES_${PN}-evas = "${libdir}/libecore_evas.so.*"
FILES_${PN}-fb = "${libdir}/libecore_fb.so.*"
FILES_${PN}-file = "${libdir}/libecore_file.so.*"
+FILES_${PN}-imf = "${libdir}/libecore_imf.so.*"
+FILES_${PN}-imf-evas = "${libdir}/libecore_imf_evas.so.*"
FILES_${PN}-ipc = "${libdir}/libecore_ipc.so.*"
FILES_${PN}-job = "${libdir}/libecore_job.so.*"
FILES_${PN}-txt = "${libdir}/libecore_txt.so.*"
diff --git a/packages/efl1/ecore_cvs.bb b/packages/efl1/ecore_cvs.bb
index 53ee8642d8..6580957871 100644
--- a/packages/efl1/ecore_cvs.bb
+++ b/packages/efl1/ecore_cvs.bb
@@ -1,16 +1,17 @@
require ecore.inc
-PR = "r5"
+PR = "r1"
EXTRA_OECONF = "\
--enable-ecore-txt \
--disable-ecore-x-xcb \
+ --enable-simple-x11 \
--enable-ecore-x \
--enable-ecore-job \
--disable-ecore-directfb \
--disable-ecore-sdl \
--enable-ecore-fb \
--enable-ecore-evas \
- --disable-ecore-evas-gl \
+ --disable-ecore-evas-x11-gl \
--enable-ecore-evas-xrender \
--enable-ecore-evas-dfb \
--disable-openssl \
diff --git a/packages/efl1/edbus_cvs.bb b/packages/efl1/edbus_cvs.bb
index db1547c3d4..755efcb9ec 100644
--- a/packages/efl1/edbus_cvs.bb
+++ b/packages/efl1/edbus_cvs.bb
@@ -1,12 +1,18 @@
DESCRIPTION = "DBus and HAL convenience wrappers for EFL"
DEPENDS = "dbus ecore"
LICENSE = "MIT"
-PR = "r0"
+PR = "r1"
inherit efl_library
-SRC_URI = "${E_CVS};module=e17/proto/e_dbus"
+SRC_URI = "${E_CVS};module=e17/libs/e_dbus"
S = "${WORKDIR}/e_dbus"
# TODO increase package granularity
+PACKAGES =+ "${PN}-enotify ${PN}-edbus ${PN}-enm ${PN}-ehal"
+FILES_${PN}-enotify = "${libdir}/libenotify.so.*"
+FILES_${PN}-edbus = "${libdir}/libedbus.so.*"
+FILES_${PN}-enm = "${libdir}/libenm.so.*"
+FILES_${PN}-ehal = "${libdir}/libehal.so.*"
+
diff --git a/packages/efl1/epdf_cvs.bb b/packages/efl1/epdf_cvs.bb
index 7ca33bf9d8..27c475c37d 100644
--- a/packages/efl1/epdf_cvs.bb
+++ b/packages/efl1/epdf_cvs.bb
@@ -1,11 +1,13 @@
DESCRIPTION = "Epdf is the glue between EFL and libpoppler"
LICENSE = "BSD"
-DEPENDS = "poppler evas ecore etk ewl"
+DEPENDS = "poppler evas ecore etk"
PV = "0.1.0+cvs${SRCDATE}"
-PR = "r1"
+PR = "r2"
inherit efl_library
+EXTRA_OECONF = "--disable-ewl"
+
SRC_URI = "${E_CVS};module=e17/proto/${SRCNAME} \
file://fix-plugin-path-check.patch;HACK=1;patch=1"
diff --git a/packages/efl1/evas.inc b/packages/efl1/evas.inc
index 608c897295..0dc8f2d0e8 100644
--- a/packages/efl1/evas.inc
+++ b/packages/efl1/evas.inc
@@ -42,6 +42,7 @@ RRECOMMENDS_${PN} = "\
libevas-engine-software-generic \
libevas-engine-software-x11 \
libevas-engine-software-16 \
+ libevas-engine-software-16-x11 \
libevas-engine-xrender-x11 \
\
libevas-loader-png \
@@ -49,3 +50,4 @@ RRECOMMENDS_${PN} = "\
libevas-loader-eet \
libevas-loader-svg \
"
+
diff --git a/packages/efl1/evas_cvs.bb b/packages/efl1/evas_cvs.bb
index e386d307ad..0734967992 100644
--- a/packages/efl1/evas_cvs.bb
+++ b/packages/efl1/evas_cvs.bb
@@ -1,5 +1,5 @@
require evas.inc
-PR = "r4"
+PR = "r1"
EXTRA_OECONF = "\
--x-includes=${STAGING_INCDIR}/X11 \
@@ -10,6 +10,7 @@ EXTRA_OECONF = "\
--enable-buffer \
--disable-software-ddraw \
--disable-software-qtopia \
+ --enable-simple-x11 \
--enable-software-x11 \
--enable-software-16-x11 \
--disable-software-xcb \
diff --git a/packages/roadmap/roadmap-gtk2-1.0.12/.mtn2git_empty b/packages/freesmartphone/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/roadmap/roadmap-gtk2-1.0.12/.mtn2git_empty
+++ b/packages/freesmartphone/.mtn2git_empty
diff --git a/packages/freesmartphone/gsm0710muxd_svn.bb b/packages/freesmartphone/gsm0710muxd_svn.bb
new file mode 100644
index 0000000000..aca7e2770d
--- /dev/null
+++ b/packages/freesmartphone/gsm0710muxd_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "gsm.07.10 muxer userspace daemon"
+AUTHOR = "M. Dietrich"
+SECTION = "console/network"
+DEPENDS = "intltool-native dbus"
+LICENSE = "GPL"
+PV = "0.0+svnr${SRCREV}"
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/smartphones/trunk/software;module=gsm0710muxd"
+S = "${WORKDIR}/gsm0710muxd"
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "gsm0710muxd"
+INITSCRIPT_PARAMS = "defaults 35"
diff --git a/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch b/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch
new file mode 100644
index 0000000000..b3d38ad983
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/fortran-cross-compile-hack.patch
@@ -0,0 +1,30 @@
+* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
+ used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
+ directory.
+
+diff --git a/libgfortran/configure b/libgfortran/configure
+index f7d86fb..d0966ec 100755
+--- a/libgfortran/configure
++++ b/libgfortran/configure
+@@ -4475,6 +4475,6 @@ exec 5>>./config.log
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ ac_ext=${FC_SRCEXT-f}
+ ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+\ No newline at end of file
+diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
+index 4661306..9f83e55 100644
+--- a/libgfortran/configure.ac
++++ b/libgfortran/configure.ac
+@@ -140,7 +140,7 @@ AC_SUBST(enable_static)
+
+ # We need gfortran to compile parts of the library
+ #AC_PROG_FC(gfortran)
+-FC="$GFORTRAN"
++#FC="$GFORTRAN"
+ AC_PROG_FC(gfortran)
+
+ # extra LD Flags which are required for targets
diff --git a/packages/gcc/gcc-4.2.2/fortran-static-linking.patch b/packages/gcc/gcc-4.2.2/fortran-static-linking.patch
new file mode 100644
index 0000000000..3dd6321dc3
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/fortran-static-linking.patch
@@ -0,0 +1,48 @@
+f951 (fortran) links to MPFR and GMP of our staging area but when executing
+the command the libs can not be found. Use rpath like all the other apps in
+our staging bin/ directory.
+
+Patch the configure to avoid the regeneration...
+
+Index: gcc-4.2.2/configure
+===================================================================
+--- gcc-4.2.2.orig/configure 2008-01-15 23:23:41.000000000 +0100
++++ gcc-4.2.2/configure 2008-01-15 23:25:20.000000000 +0100
+@@ -2278,14 +2278,14 @@
+
+
+ if test "x$with_mpfr" != x; then
+- gmplibs="-L$with_mpfr/lib $gmplibs"
++ gmplibs="-static -L$with_mpfr/lib $gmplibs"
+ gmpinc="-I$with_mpfr/include"
+ fi
+ if test "x$with_mpfr_include" != x; then
+ gmpinc="-I$with_mpfr_include"
+ fi
+ if test "x$with_mpfr_lib" != x; then
+- gmplibs="-L$with_mpfr_lib $gmplibs"
++ gmplibs="-static -L$with_mpfr_lib $gmplibs"
+ fi
+
+ # Specify a location for gmp
+Index: gcc-4.2.2/configure.in
+===================================================================
+--- gcc-4.2.2.orig/configure.in 2008-01-15 23:23:41.000000000 +0100
++++ gcc-4.2.2/configure.in 2008-01-15 23:24:36.000000000 +0100
+@@ -1066,14 +1066,14 @@
+ AC_ARG_WITH(mpfr_lib, [ --with-mpfr-lib=PATH Specify the directory for the installed MPFR library])
+
+ if test "x$with_mpfr" != x; then
+- gmplibs="-L$with_mpfr/lib $gmplibs"
++ gmplibs="-static -L$with_mpfr/lib $gmplibs"
+ gmpinc="-I$with_mpfr/include"
+ fi
+ if test "x$with_mpfr_include" != x; then
+ gmpinc="-I$with_mpfr_include"
+ fi
+ if test "x$with_mpfr_lib" != x; then
+- gmplibs="-L$with_mpfr_lib $gmplibs"
++ gmplibs="-static -L$with_mpfr_lib $gmplibs"
+ fi
+
+ # Specify a location for gmp
diff --git a/packages/gcc/gcc-4.2.2/gcc-4.0.2-e300c2c3.patch b/packages/gcc/gcc-4.2.2/gcc-4.0.2-e300c2c3.patch
new file mode 100644
index 0000000000..736ac4b6b6
--- /dev/null
+++ b/packages/gcc/gcc-4.2.2/gcc-4.0.2-e300c2c3.patch
@@ -0,0 +1,311 @@
+Adds support for Freescale Power architecture e300c2 and e300c3 cores.
+http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm
+
+Leon Woestenberg <leonw@mailcan.com>
+
+Index: gcc-4.1.2/gcc/config/rs6000/e300c2c3.md
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ gcc-4.1.2/gcc/config/rs6000/e300c2c3.md 2007-10-18 15:32:51.000000000 +0200
+@@ -0,0 +1,189 @@
++;; Pipeline description for Motorola PowerPC e300c3 core.
++;; Copyright (C) 2003 Free Software Foundation, Inc.
++;;
++;; This file is part of GCC.
++
++;; GCC is free software; you can redistribute it and/or modify it
++;; under the terms of the GNU General Public License as published
++;; by the Free Software Foundation; either version 2, or (at your
++;; option) any later version.
++
++;; GCC is distributed in the hope that it will be useful, but WITHOUT
++;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++;; License for more details.
++
++;; You should have received a copy of the GNU General Public License
++;; along with GCC; see the file COPYING. If not, write to the
++;; Free Software Foundation, 59 Temple Place - Suite 330, Boston,
++;; MA 02111-1307, USA.
++
++(define_automaton "ppce300c3_most,ppce300c3_long,ppce300c3_retire")
++(define_cpu_unit "ppce300c3_decode_0,ppce300c3_decode_1" "ppce300c3_most")
++
++;; We don't simulate general issue queue (GIC). If we have SU insn
++;; and then SU1 insn, they can not be issued on the same cycle
++;; (although SU1 insn and then SU insn can be issued) because the SU
++;; insn will go to SU1 from GIC0 entry. Fortunately, the first cycle
++;; multipass insn scheduling will find the situation and issue the SU1
++;; insn and then the SU insn.
++(define_cpu_unit "ppce300c3_issue_0,ppce300c3_issue_1" "ppce300c3_most")
++
++;; We could describe completion buffers slots in combination with the
++;; retirement units and the order of completion but the result
++;; automaton would behave in the same way because we can not describe
++;; real latency time with taking in order completion into account.
++;; Actually we could define the real latency time by querying reserved
++;; automaton units but the current scheduler uses latency time before
++;; issuing insns and making any reservations.
++;;
++;; So our description is aimed to achieve a insn schedule in which the
++;; insns would not wait in the completion buffer.
++(define_cpu_unit "ppce300c3_retire_0,ppce300c3_retire_1" "ppce300c3_retire")
++
++;; Branch unit:
++(define_cpu_unit "ppce300c3_bu" "ppce300c3_most")
++
++;; IU:
++(define_cpu_unit "ppce300c3_iu0_stage0,ppce300c3_iu1_stage0" "ppce300c3_most")
++
++;; IU: This used to describe non-pipelined division.
++(define_cpu_unit "ppce300c3_mu_div" "ppce300c3_long")
++
++;; SRU:
++(define_cpu_unit "ppce300c3_sru_stage0" "ppce300c3_most")
++
++;; Here we simplified LSU unit description not describing the stages.
++(define_cpu_unit "ppce300c3_lsu" "ppce300c3_most")
++
++;; FPU:
++(define_cpu_unit "ppce300c3_fpu" "ppce300c3_most")
++
++;; The following units are used to make automata deterministic
++(define_cpu_unit "present_ppce300c3_decode_0" "ppce300c3_most")
++(define_cpu_unit "present_ppce300c3_issue_0" "ppce300c3_most")
++(define_cpu_unit "present_ppce300c3_retire_0" "ppce300c3_retire")
++(define_cpu_unit "present_ppce300c3_iu0_stage0" "ppce300c3_most")
++
++;; The following sets to make automata deterministic when option ndfa is used.
++(presence_set "present_ppce300c3_decode_0" "ppce300c3_decode_0")
++(presence_set "present_ppce300c3_issue_0" "ppce300c3_issue_0")
++(presence_set "present_ppce300c3_retire_0" "ppce300c3_retire_0")
++(presence_set "present_ppce300c3_iu0_stage0" "ppce300c3_iu0_stage0")
++
++;; Some useful abbreviations.
++(define_reservation "ppce300c3_decode"
++ "ppce300c3_decode_0|ppce300c3_decode_1+present_ppce300c3_decode_0")
++(define_reservation "ppce300c3_issue"
++ "ppce300c3_issue_0|ppce300c3_issue_1+present_ppce300c3_issue_0")
++(define_reservation "ppce300c3_retire"
++ "ppce300c3_retire_0|ppce300c3_retire_1+present_ppce300c3_retire_0")
++(define_reservation "ppce300c3_iu_stage0"
++ "ppce300c3_iu0_stage0|ppce300c3_iu1_stage0+present_ppce300c3_iu0_stage0")
++
++;; Compares can be executed either one of the IU or SRU
++(define_insn_reservation "ppce300c3_cmp" 1
++ (and (eq_attr "type" "cmp,compare,delayed_compare,fast_compare")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+(ppce300c3_iu_stage0|ppce300c3_sru_stage0) \
++ +ppce300c3_retire")
++
++;; Other one cycle IU insns
++(define_insn_reservation "ppce300c3_iu" 1
++ (and (eq_attr "type" "integer,insert_word")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_retire")
++
++;; Branch. Actually this latency time is not used by the scheduler.
++(define_insn_reservation "ppce300c3_branch" 1
++ (and (eq_attr "type" "jmpreg,branch")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_bu,ppce300c3_retire")
++
++;; Multiply is non-pipelined but can be executed in any IU
++(define_insn_reservation "ppce300c3_multiply" 2
++ (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0, \
++ ppce300c3_iu_stage0+ppce300c3_retire")
++
++;; Divide. We use the average latency time here. We omit reserving a
++;; retire unit because of the result automata will be huge.
++(define_insn_reservation "ppce300c3_divide" 20
++ (and (eq_attr "type" "idiv")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_mu_div,\
++ ppce300c3_mu_div*19")
++
++;; CR logical
++(define_insn_reservation "ppce300c3_cr_logical" 1
++ (and (eq_attr "type" "cr_logical,delayed_cr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mfcr
++(define_insn_reservation "ppce300c3_mfcr" 1
++ (and (eq_attr "type" "mfcr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mtcrf
++(define_insn_reservation "ppce300c3_mtcrf" 1
++ (and (eq_attr "type" "mtcr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Mtjmpr
++(define_insn_reservation "ppce300c3_mtjmpr" 1
++ (and (eq_attr "type" "mtjmpr,mfjmpr")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
++
++;; Float point instructions
++(define_insn_reservation "ppce300c3_fpcompare" 3
++ (and (eq_attr "type" "fpcompare")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fp" 3
++ (and (eq_attr "type" "fp")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_dmul" 4
++ (and (eq_attr "type" "dmul")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu,nothing,ppce300c3_retire")
++
++; Divides are not pipelined
++(define_insn_reservation "ppce300c3_sdiv" 18
++ (and (eq_attr "type" "sdiv")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*17")
++
++(define_insn_reservation "ppce300c3_ddiv" 33
++ (and (eq_attr "type" "ddiv")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*32")
++
++;; Loads
++(define_insn_reservation "ppce300c3_load" 2
++ (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fpload" 2
++ (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++;; Stores.
++(define_insn_reservation "ppce300c3_store" 2
++ (and (eq_attr "type" "store,store_ux,store_u")
++ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
++
++(define_insn_reservation "ppce300c3_fpstore" 2
++ (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
++ (eq_attr "cpu" "ppce300c3"))
++ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
+Index: gcc-4.1.2/gcc/config/rs6000/rs6000.c
+===================================================================
+--- gcc-4.1.2.orig/gcc/config/rs6000/rs6000.c 2006-12-16 20:24:56.000000000 +0100
++++ gcc-4.1.2/gcc/config/rs6000/rs6000.c 2007-10-18 15:34:26.000000000 +0200
+@@ -557,6 +557,21 @@
+ COSTS_N_INSNS (29), /* ddiv */
+ };
+
++/* Instruction costs on E300C2 and E300C3 cores. */
++static const
++struct processor_costs ppce300c2c3_cost = {
++ COSTS_N_INSNS (4), /* mulsi */
++ COSTS_N_INSNS (4), /* mulsi_const */
++ COSTS_N_INSNS (4), /* mulsi_const9 */
++ COSTS_N_INSNS (4), /* muldi */
++ COSTS_N_INSNS (19), /* divsi */
++ COSTS_N_INSNS (19), /* divdi */
++ COSTS_N_INSNS (3), /* fp */
++ COSTS_N_INSNS (4), /* dmul */
++ COSTS_N_INSNS (18), /* sdiv */
++ COSTS_N_INSNS (33), /* ddiv */
++};
++
+ /* Instruction costs on POWER4 and POWER5 processors. */
+ static const
+ struct processor_costs power4_cost = {
+@@ -1140,6 +1155,8 @@
+ /* 8548 has a dummy entry for now. */
+ {"8548", PROCESSOR_PPC8540,
+ POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_STRICT_ALIGN},
++ {"e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
++ {"e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK},
+ {"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
+ {"970", PROCESSOR_POWER4,
+ POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
+@@ -1529,6 +1546,11 @@
+ rs6000_cost = &ppc8540_cost;
+ break;
+
++ case PROCESSOR_PPCE300C2:
++ case PROCESSOR_PPCE300C3:
++ rs6000_cost = &ppce300c2c3_cost;
++ break;
++
+ case PROCESSOR_POWER4:
+ case PROCESSOR_POWER5:
+ rs6000_cost = &power4_cost;
+@@ -16647,6 +16669,8 @@
+ case CPU_PPC750:
+ case CPU_PPC7400:
+ case CPU_PPC8540:
++ case CPU_PPCE300C2:
++ case CPU_PPCE300C3:
+ return 2;
+ case CPU_RIOS2:
+ case CPU_PPC604:
+Index: gcc-4.1.2/gcc/config/rs6000/rs6000.h
+===================================================================
+--- gcc-4.1.2.orig/gcc/config/rs6000/rs6000.h 2006-11-18 01:25:49.000000000 +0100
++++ gcc-4.1.2/gcc/config/rs6000/rs6000.h 2007-10-18 15:32:51.000000000 +0200
+@@ -111,6 +111,8 @@
+ %{mcpu=970: -mpower4 -maltivec} \
+ %{mcpu=G5: -mpower4 -maltivec} \
+ %{mcpu=8540: -me500} \
++%{mcpu=e300c2: -mppc} \
++%{mcpu=e300c3: -mppc -mpmr} \
+ %{maltivec: -maltivec} \
+ -many"
+
+@@ -211,6 +213,8 @@
+ PROCESSOR_PPC7400,
+ PROCESSOR_PPC7450,
+ PROCESSOR_PPC8540,
++ PROCESSOR_PPCE300C2,
++ PROCESSOR_PPCE300C3,
+ PROCESSOR_POWER4,
+ PROCESSOR_POWER5
+ };
+Index: gcc-4.1.2/gcc/config/rs6000/rs6000.md
+===================================================================
+--- gcc-4.1.2.orig/gcc/config/rs6000/rs6000.md 2006-12-16 20:24:56.000000000 +0100
++++ gcc-4.1.2/gcc/config/rs6000/rs6000.md 2007-10-18 15:32:51.000000000 +0200
+@@ -103,7 +103,7 @@
+ ;; Processor type -- this attribute must exactly match the processor_type
+ ;; enumeration in rs6000.h.
+
+-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5"
++(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,ppce300c2,ppce300c3,power4,power5"
+ (const (symbol_ref "rs6000_cpu_attr")))
+
+ (automata_option "ndfa")
+@@ -119,6 +119,7 @@
+ (include "7xx.md")
+ (include "7450.md")
+ (include "8540.md")
++(include "e300c2c3.md")
+ (include "power4.md")
+ (include "power5.md")
+
+Index: gcc-4.1.2/gcc/config.gcc
+===================================================================
+--- gcc-4.1.2.orig/gcc/config.gcc 2007-10-18 15:26:23.000000000 +0200
++++ gcc-4.1.2/gcc/config.gcc 2007-10-18 15:32:51.000000000 +0200
+@@ -2710,7 +2710,7 @@
+ | rios | rios1 | rios2 | rsc | rsc1 | rs64a \
+ | 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
+ | 601 | 602 | 603 | 603e | ec603e | 604 \
+- | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
++ | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 | e300c[23] \
+ | 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5)
+ # OK
+ ;;
diff --git a/packages/gcc/gcc-cross-sdk_4.2.2.bb b/packages/gcc/gcc-cross-sdk_4.2.2.bb
new file mode 100644
index 0000000000..2fdaa7dc27
--- /dev/null
+++ b/packages/gcc/gcc-cross-sdk_4.2.2.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "The GNU cc and gcc C compilers."
+HOMEPAGE = "http://www.gnu.org/software/gcc/"
+SECTION = "devel"
+LICENSE = "GPL"
+PR = "r2"
+
+inherit sdk
+
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
+
+PACKAGES = "${PN}"
+
+require gcc_${PV}.bb
+require gcc4-build-sdk.inc
+require gcc-package-sdk.inc
+
+DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
+
+EXTRA_OECONF += "--disable-libunwind-exceptions --disable-libssp \
+ --disable-libgomp --disable-libmudflap \
+ --with-mpfr=${STAGING_DIR_NATIVE}${layout_exec_prefix}"
diff --git a/packages/gcc/gcc-cross_4.2.2.bb b/packages/gcc/gcc-cross_4.2.2.bb
index ec169072af..daf0e65003 100644
--- a/packages/gcc/gcc-cross_4.2.2.bb
+++ b/packages/gcc/gcc-cross_4.2.2.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r2"
+PR = "r3"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc_4.2.2.bb b/packages/gcc/gcc_4.2.2.bb
index de3b65ce7f..15a25c9c6a 100644
--- a/packages/gcc/gcc_4.2.2.bb
+++ b/packages/gcc/gcc_4.2.2.bb
@@ -1,4 +1,4 @@
-PR = "r2"
+PR = "r3"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -39,7 +39,9 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://fix-ICE-in-arm_unwind_emit_set.diff;patch=1 \
file://cache-amnesia.patch;patch=1 \
file://gfortran.patch;patch=1 \
+ file://gcc-4.0.2-e300c2c3.patch;patch=1 \
file://pr34130.patch;patch=1 \
+ file://fortran-static-linking.patch;patch=1 \
"
SRC_URI_append_ep93xx = " \
@@ -71,6 +73,8 @@ SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
FORTRAN = ""
FORTRAN_linux-gnueabi = ",fortran"
+DEPENDS += " gmp mpfr "
+
#Set the java bits
JAVA = ""
JAVA_arm = ""
@@ -82,3 +86,9 @@ ARCH_FLAGS_FOR_TARGET=-isystem${STAGING_INCDIR}
EXTRA_OECONF += " --disable-libssp --disable-bootstrap "
+# We know some one is including us, but we only want to apply this fortran hack for the real gcc
+python __anonymous () {
+ import bb
+ if bb.data.getVar('PN', d, True) == "gcc":
+ bb.data.setVar('SRC_URI_append', ' file://fortran-cross-compile-hack.patch;patch=1', d)
+}
diff --git a/packages/roadmap/zroadmap-1.0.12/.mtn2git_empty b/packages/gnutls/gnutls-1.6.3/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/roadmap/zroadmap-1.0.12/.mtn2git_empty
+++ b/packages/gnutls/gnutls-1.6.3/.mtn2git_empty
diff --git a/packages/gnutls/gnutls/configure_madness.patch b/packages/gnutls/gnutls-1.6.3/configure_madness.patch
index 26111dfe96..26111dfe96 100644
--- a/packages/gnutls/gnutls/configure_madness.patch
+++ b/packages/gnutls/gnutls-1.6.3/configure_madness.patch
diff --git a/packages/gnutls/gnutls/gnutls-openssl.patch b/packages/gnutls/gnutls-1.6.3/gnutls-openssl.patch
index e2c189592f..e2c189592f 100644
--- a/packages/gnutls/gnutls/gnutls-openssl.patch
+++ b/packages/gnutls/gnutls-1.6.3/gnutls-openssl.patch
diff --git a/packages/gnutls/gnutls/gnutls-texinfo-euro.patch b/packages/gnutls/gnutls-1.6.3/gnutls-texinfo-euro.patch
index e2a2762424..e2a2762424 100644
--- a/packages/gnutls/gnutls/gnutls-texinfo-euro.patch
+++ b/packages/gnutls/gnutls-1.6.3/gnutls-texinfo-euro.patch
diff --git a/packages/gnutls/gnutls.inc b/packages/gnutls/gnutls.inc
index 2211d5f798..d08b0ca931 100644
--- a/packages/gnutls/gnutls.inc
+++ b/packages/gnutls/gnutls.inc
@@ -4,10 +4,7 @@ DEPENDS = "zlib libgcrypt lzo"
LICENSE = "LGPL"
-SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2 \
- file://gnutls-openssl.patch;patch=1 \
- file://gnutls-texinfo-euro.patch;patch=1 \
- file://configure_madness.patch;patch=1 "
+SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2"
inherit autotools binconfig pkgconfig
diff --git a/packages/gnutls/gnutls_1.6.3.bb b/packages/gnutls/gnutls_1.6.3.bb
index a5b5341156..ddaef1dea3 100644
--- a/packages/gnutls/gnutls_1.6.3.bb
+++ b/packages/gnutls/gnutls_1.6.3.bb
@@ -1,2 +1,9 @@
require gnutls.inc
+
+SRC_URI += "\
+ file://gnutls-openssl.patch;patch=1 \
+ file://gnutls-texinfo-euro.patch;patch=1 \
+ file://configure_madness.patch;patch=1 \
+ "
+
PR = "r3"
diff --git a/packages/gpe-scap/gpe-scap-1.3/.mtn2git_empty b/packages/gpe-scap/gpe-scap-1.3/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap-1.3/.mtn2git_empty
diff --git a/packages/gpe-scap/gpe-scap-1.3/allow-glade-2.4.0.patch b/packages/gpe-scap/gpe-scap-1.3/allow-glade-2.4.0.patch
new file mode 100644
index 0000000000..766c5a51d9
--- /dev/null
+++ b/packages/gpe-scap/gpe-scap-1.3/allow-glade-2.4.0.patch
@@ -0,0 +1,26 @@
+Index: gpe-scap-1.3/configure
+===================================================================
+--- gpe-scap-1.3.orig/configure 2008-01-17 17:01:49.000000000 +0100
++++ gpe-scap-1.3/configure 2008-01-17 17:03:01.000000000 +0100
+@@ -6327,7 +6327,7 @@
+
+
+
+-GLADE_MODULES="libglade-2.0 >= 2.4.2"
++GLADE_MODULES="libglade-2.0 >= 2.4.0"
+
+ pkg_failed=no
+ { echo "$as_me:$LINENO: checking for GLADE" >&5
+Index: gpe-scap-1.3/configure.ac
+===================================================================
+--- gpe-scap-1.3.orig/configure.ac 2008-01-17 17:35:15.000000000 +0100
++++ gpe-scap-1.3/configure.ac 2008-01-17 17:35:20.000000000 +0100
+@@ -29,7 +29,7 @@
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+
+-GLADE_MODULES="libglade-2.0 >= 2.4.2"
++GLADE_MODULES="libglade-2.0 >= 2.4.0"
+ PKG_CHECK_MODULES(GLADE, $GLADE_MODULES)
+ AC_SUBST(GLADE_CFLAGS)
+ AC_SUBST(GLADE_LIBS)
diff --git a/packages/gpe-scap/gpe-scap_1.3.bb b/packages/gpe-scap/gpe-scap_1.3.bb
index aec5819e6e..438a80f4a3 100644
--- a/packages/gpe-scap/gpe-scap_1.3.bb
+++ b/packages/gpe-scap/gpe-scap_1.3.bb
@@ -11,3 +11,5 @@ DEPENDS = "glib-2.0 gtk+ libgpewidget libglade libsoup"
GPE_TARBALL_SUFFIX = "bz2"
inherit gpe autotools
+
+SRC_URI += " file://allow-glade-2.4.0.patch;patch=1"
diff --git a/packages/gpe-session-scripts/files/angstrom/matchbox-session b/packages/gpe-session-scripts/files/angstrom/matchbox-session
index b0bec8c742..d48b9ed308 100644
--- a/packages/gpe-session-scripts/files/angstrom/matchbox-session
+++ b/packages/gpe-session-scripts/files/angstrom/matchbox-session
@@ -1,8 +1,6 @@
#!/bin/sh
-XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1`
-
- matchbox-desktop &
-
-matchbox-panel --no-flip --orientation south &
+#XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1`
+matchbox-desktop &
+matchbox-panel --no-flip --orientation south &
diff --git a/packages/gpe-session-scripts/files/matchbox-session b/packages/gpe-session-scripts/files/matchbox-session
index e4c0e0c68e..77d5db9df8 100644
--- a/packages/gpe-session-scripts/files/matchbox-session
+++ b/packages/gpe-session-scripts/files/matchbox-session
@@ -1,8 +1,6 @@
#!/bin/sh
-XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1`
-
- matchbox-desktop &
-
-MB_MENU_PANEL_DISABLED=1 matchbox-panel --orientation south &
+#XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1`
+matchbox-desktop &
+MB_MENU_PANEL_DISABLED=1 matchbox-panel --orientation south &
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 b8d91538c6..bab26e7df0 100644
--- a/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
+++ b/packages/gpe-session-scripts/gpe-session-scripts_0.67.bb
@@ -11,7 +11,7 @@ DEPENDS = "matchbox-wm matchbox-panel xtscal gpe-question matchbox-applet-inputm
SRC_URI += "file://matchbox-session \
file://disable-composite.xsettings"
-PR = "r10"
+PR = "r11"
#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/gpephone/addressbook_svn.bb b/packages/gpephone/addressbook_svn.bb
index 663c38c09c..cb913bc663 100644
--- a/packages/gpephone/addressbook_svn.bb
+++ b/packages/gpephone/addressbook_svn.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "LiPS address book"
SECTION = "gpe"
PRIORITY = "optional"
PR = "r0"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/almmgrd_svn.bb b/packages/gpephone/almmgrd_svn.bb
new file mode 100644
index 0000000000..70d02ff018
--- /dev/null
+++ b/packages/gpephone/almmgrd_svn.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Alarm manager daemon"
+SECTION = "gpephone"
+PRIORITY = "required"
+LICENSE = "LiPS"
+DEPENDS = "glib-2.0 libiac sqlite3 libcalenabler2 libalmmgr"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = "${WORKDIR}/${PN}"
diff --git a/packages/gpephone/calendar2_svn.bb b/packages/gpephone/calendar2_svn.bb
new file mode 100644
index 0000000000..a68b8824f3
--- /dev/null
+++ b/packages/gpephone/calendar2_svn.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Calendar application for GPE Phone Edition"
+LICENSE = "LiPS"
+SECTION = "gpe"
+PRIORITY = "optional"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone libgemwidget dbus-glib libcalenabler2 libiac"
+
+inherit gpephone autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+FILES_${PN} += "${datadir}/database ${datadir}/res"
diff --git a/packages/gpephone/contact_svn.bb b/packages/gpephone/contact_svn.bb
index 0b785ac9f0..ef4d2707ab 100644
--- a/packages/gpephone/contact_svn.bb
+++ b/packages/gpephone/contact_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpe"
PRIORITY = "optional"
LICENSE = "LiPS"
DEPENDS = "gtk+ libgpephone dbus-glib libabenabler2 librecord2 libgemwidget"
-PV = "0.0+svn-${SRCREV}"
+PV = "0.0+svnr-${SRCREV}"
PR = "r0"
inherit gpephone autotools
diff --git a/packages/gpephone/dialer_svn.bb b/packages/gpephone/dialer_svn.bb
new file mode 100644
index 0000000000..7b1b883652
--- /dev/null
+++ b/packages/gpephone/dialer_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "GPE Phone Edition phone dialer"
+SECTION = "gpe"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ libgpephone libgemwidget"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone autotools
+
+SRC_URI = ${GPEPHONE_SVN}
+
+EXTRA_OECONF = "--disable-hiker"
+
+S = "${WORKDIR}/${PN}"
+
+
+FILES_${PN} += "${datadir}"
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/firewall_svn.bb b/packages/gpephone/firewall_svn.bb
index 77b2122449..b3d7aee848 100644
--- a/packages/gpephone/firewall_svn.bb
+++ b/packages/gpephone/firewall_svn.bb
@@ -5,8 +5,6 @@ PRIORITY = "optional"
PR = "r0"
PV = "0.0+svnr-${SRCREV}"
-SRCREV_pn-${PN} ?= "1400"
-
DEFAULT_PREFERENCE = "-1"
DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf-dbus"
diff --git a/packages/gpephone/gpe-applauncher_svn.bb b/packages/gpephone/gpe-applauncher_svn.bb
index 311d2eef60..9360c6f6d3 100644
--- a/packages/gpephone/gpe-applauncher_svn.bb
+++ b/packages/gpephone/gpe-applauncher_svn.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "A cellphone application launcher."
SECTION = "gpe"
PRIORITY = "optional"
PR = "r1"
-PV = "0.11+svn-${SRCREV}"
+PV = "0.11+svnr-${SRCREV}"
SRC_URI_OVERRIDES_PACKAGE_ARCH = "0"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/libabenabler2_svn.bb b/packages/gpephone/libabenabler2_svn.bb
index ea070092a2..004ba3ec46 100644
--- a/packages/gpephone/libabenabler2_svn.bb
+++ b/packages/gpephone/libabenabler2_svn.bb
@@ -3,15 +3,15 @@ SECTION = "gpe/libs"
PRIORITY = "optional"
LICENSE = "LGPL"
DEPENDS = "glib-2.0 librecord2 gconf sqlite3"
-PV = "0.0+svn-${SRCDATE}"
+PV = "0.0+svnr-${SRCREV}"
PR = "r0"
+inherit gpephone pkgconfig autotools
+
SRC_URI = "${GPEPHONE_SVN}"
S = "${WORKDIR}/${PN}"
-inherit gpephone pkgconfig autotools
-
do_stage () {
autotools_stage_all
}
diff --git a/packages/gpephone/libabenabler_svn.bb b/packages/gpephone/libabenabler_svn.bb
index f362c853d6..4468c3580e 100644
--- a/packages/gpephone/libabenabler_svn.bb
+++ b/packages/gpephone/libabenabler_svn.bb
@@ -4,7 +4,7 @@ SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 librecord liblipsevent libim sqlite3"
PR = "r0"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/libalmmgr_svn.bb b/packages/gpephone/libalmmgr_svn.bb
new file mode 100644
index 0000000000..cbae037109
--- /dev/null
+++ b/packages/gpephone/libalmmgr_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "LiPS alarm framework library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "glib-2.0 libiac"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libcalenabler2_svn.bb b/packages/gpephone/libcalenabler2_svn.bb
index 6144e055de..e3bf129ab1 100644
--- a/packages/gpephone/libcalenabler2_svn.bb
+++ b/packages/gpephone/libcalenabler2_svn.bb
@@ -2,17 +2,16 @@ DESCRIPTION = "LiPS calendar API."
SECTION = "gpe/libs"
PRIORITY = "optional"
LICENSE = "LiPS"
-DEPENDS = "glib-2.0 sqlite3 libical"
-PV = "0.0+svn-${SRCREV}"
+DEPENDS = "glib-2.0 sqlite3 libical libalmmgr"
+PV = "0.0+svnr-${SRCREV}"
PR = "r0"
-SRC_URI = "${GPEPHONE_SVN}"
-S = "${WORKDIR}/${PN}"
+inherit gpephone pkgconfig autotools
-GPE_TARBALL_SUFFIX = "bz2"
+SRC_URI = "${GPEPHONE_SVN}"
-inherit gpephone pkgconfig autotools
+S = "${WORKDIR}/${PN}"
do_stage () {
autotools_stage_all
diff --git a/packages/gpephone/libgemwidget_svn.bb b/packages/gpephone/libgemwidget_svn.bb
new file mode 100644
index 0000000000..f4e2e350d8
--- /dev/null
+++ b/packages/gpephone/libgemwidget_svn.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Extended widget library for GPE phone environment."
+LICENSE = "LiPS"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "gtk+ libiac libgpephone gnome-vfs libxdamage libxcomposite libgpewidget"
+PV = "1.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+FILES_${PN} += "${datadir}/gem"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libiac2/.mtn2git_empty b/packages/gpephone/libiac2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/libiac2/.mtn2git_empty
diff --git a/packages/gpephone/libiac2/disable-tests.patch b/packages/gpephone/libiac2/disable-tests.patch
new file mode 100644
index 0000000000..5345d1cc97
--- /dev/null
+++ b/packages/gpephone/libiac2/disable-tests.patch
@@ -0,0 +1,25 @@
+--- Makefile.am~ 2008-01-10 17:43:18.000000000 +0100
++++ Makefile.am 2008-01-10 17:43:18.000000000 +0100
+@@ -1,4 +1,4 @@
+-SUBDIRS = src include test po
++SUBDIRS = src include po
+
+ if BUILD_DAEMON
+ SUBDIRS += daemon
+--- configure.ac~ 2008-01-10 17:50:03.000000000 +0100
++++ configure.ac 2008-01-10 17:50:03.000000000 +0100
+@@ -40,14 +40,11 @@
+ AM_CONDITIONAL(BUILD_DAEMON,
+ test x$enable_daemon = xyes)
+
+-AM_PATH_CUNIT
+-
+ AC_CONFIG_FILES([
+ Makefile
+ daemon/Makefile
+ src/Makefile
+ include/Makefile
+-test/Makefile
+ po/Makefile.in
+ libiac2.pc
+ ])
diff --git a/packages/gpephone/libiac2_svn.bb b/packages/gpephone/libiac2_svn.bb
new file mode 100644
index 0000000000..7ae0c7b693
--- /dev/null
+++ b/packages/gpephone/libiac2_svn.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "LiPS IPC library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ gtk-doc dbus-glib"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN} \
+ file://disable-tests.patch;patch=1;pnum=0"
+
+EXTRA_OECONF = "--enable-gui --enable-test=no --with-cuint=no"
+
+S = ${WORKDIR}/${PN}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libiac_svn.bb b/packages/gpephone/libiac_svn.bb
new file mode 100644
index 0000000000..0cd1d6487d
--- /dev/null
+++ b/packages/gpephone/libiac_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "LiPS IPC library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+LICENSE = "LiPS"
+DEPENDS = "gtk+ gtk-doc"
+PV = "1.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libim2/.mtn2git_empty b/packages/gpephone/libim2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpephone/libim2/.mtn2git_empty
diff --git a/packages/gpephone/libim2/disable-tests.patch b/packages/gpephone/libim2/disable-tests.patch
new file mode 100644
index 0000000000..c794abd777
--- /dev/null
+++ b/packages/gpephone/libim2/disable-tests.patch
@@ -0,0 +1,11 @@
+--- libim2/Makefile.am~ 2008-01-12 01:24:42.000000000 +0100
++++ libim2/Makefile.am 2008-01-12 01:24:42.000000000 +0100
+@@ -2,7 +2,7 @@
+ # have all needed files, that a GNU package needs
+ AUTOMAKE_OPTIONS = foreign 1.4
+
+-SUBDIRS = src include test
++SUBDIRS = src include
+
+ #servicesdir = @DBUS_SERVICES_DIR@
+ #services_DATA = improxy.service
diff --git a/packages/gpephone/libim2_svn.bb b/packages/gpephone/libim2_svn.bb
new file mode 100644
index 0000000000..510877ce3e
--- /dev/null
+++ b/packages/gpephone/libim2_svn.bb
@@ -0,0 +1,22 @@
+LICENSE = "LGPL"
+DESCRIPTION = "LiPS instant messenger library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 librecord2 libabenabler2 liblipsevent2 telepathy-glib telepathy-mission-control"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN} \
+ file://disable-tests.patch;patch=1"
+
+EXTRA_OECONF = "--enable-test=no"
+
+S = ${WORKDIR}/libim2
+
+FILES_${PN} += " ${datadir}/dbus-1"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/liblipsevent2_svn.bb b/packages/gpephone/liblipsevent2_svn.bb
new file mode 100644
index 0000000000..5d2330c671
--- /dev/null
+++ b/packages/gpephone/liblipsevent2_svn.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "LiPS event model library."
+LICENSE = "LiPS"
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r0"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libmsgenabler2_svn.bb b/packages/gpephone/libmsgenabler2_svn.bb
new file mode 100644
index 0000000000..a294dc93b7
--- /dev/null
+++ b/packages/gpephone/libmsgenabler2_svn.bb
@@ -0,0 +1,23 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS message backend library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 dbus-glib librecord2 liblipsevent2 telepathy-mission-control libgsmd-lips"
+PV = "0.0+svnr-${SRCREV}"
+PR = "r2"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+S = ${WORKDIR}/${PN}
+
+FILES_${PN} += "${datadir}/libmsgenabler2 ${libdir}/msg-providers/*.0"
+FILES_${PN}-dev += "${libdir}/msg-providers/*.so ${libdir}/msg-providers/*a"
+FILES_${PN}-dbg += "${libdir}/msg-providers/.debug"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/libmsgenabler_1.0.bb b/packages/gpephone/libmsgenabler_1.0.bb
index 0522507db0..b8d202a5dd 100644
--- a/packages/gpephone/libmsgenabler_1.0.bb
+++ b/packages/gpephone/libmsgenabler_1.0.bb
@@ -3,12 +3,14 @@ DESCRIPTION = "LiPS message backend library."
SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 dbus-glib librecord sqlite3"
-PR = "r0"
+PR = "r1"
GPE_TARBALL_SUFFIX = "bz2"
inherit gpephone pkgconfig autotools
+FILES_${PN} += "$(datadir)/libmsgenabler"
+
do_stage () {
autotools_stage_all
}
diff --git a/packages/gpephone/libmsgenabler_svn.bb b/packages/gpephone/libmsgenabler_svn.bb
new file mode 100644
index 0000000000..c8672e143e
--- /dev/null
+++ b/packages/gpephone/libmsgenabler_svn.bb
@@ -0,0 +1,21 @@
+LICENSE = "LiPS"
+DESCRIPTION = "LiPS message backend library."
+SECTION = "gpe/libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 dbus-glib librecord sqlite3"
+PV = "1.0+svnr-${SRCREV}"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+inherit gpephone pkgconfig autotools
+
+SRC_URI = "${GPEPHONE_SVN}"
+
+FILES_${PN} += "$(datadir)/libmsgenabler"
+
+S = "${WORKDIR}/${PN}"
+
+do_stage () {
+ autotools_stage_all
+}
diff --git a/packages/gpephone/librecord2_svn.bb b/packages/gpephone/librecord2_svn.bb
index 6580f6566f..378032dabf 100644
--- a/packages/gpephone/librecord2_svn.bb
+++ b/packages/gpephone/librecord2_svn.bb
@@ -4,7 +4,7 @@ SECTION = "gpe/libs"
PRIORITY = "optional"
DEPENDS = "glib-2.0 e2fsprogs-libs sqlite3"
PR = "r0"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/libsettings_svn.bb b/packages/gpephone/libsettings_svn.bb
index e436849d74..74e1190c5a 100644
--- a/packages/gpephone/libsettings_svn.bb
+++ b/packages/gpephone/libsettings_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpe/libs"
PRIORITY = "required"
LICENSE = "LiPS"
DEPENDS = "glib-2.0 gconf-dbus"
-PV = "0.0+svn-${SRCDATE}"
+PV = "0.0+svnr-${SRCREV}"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/machined_svn.bb b/packages/gpephone/machined_svn.bb
index 5c96cfa97c..0c5ccfff51 100644
--- a/packages/gpephone/machined_svn.bb
+++ b/packages/gpephone/machined_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpephone"
PRIORITY = "required"
LICENSE = "GPL"
DEPENDS = "glib-2.0 dbus-glib gtk+"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
PR = "r0"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/ptim-engine_svn.bb b/packages/gpephone/ptim-engine_svn.bb
index 37c99f7dd1..281ee72c26 100644
--- a/packages/gpephone/ptim-engine_svn.bb
+++ b/packages/gpephone/ptim-engine_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpephone"
PRIORITY = "optional"
LICENSE = "LiPS"
DEPENDS = "gtk+ ptim-headers"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/ptim-headers_svn.bb b/packages/gpephone/ptim-headers_svn.bb
index 304c103505..4384feccbd 100644
--- a/packages/gpephone/ptim-headers_svn.bb
+++ b/packages/gpephone/ptim-headers_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpephone"
PRIORITY = "optional"
LICENSE = "LiPS"
DEPENDS = "gtk+"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
inherit gpephone pkgconfig autotools
diff --git a/packages/gpephone/ptim-helper_svn.bb b/packages/gpephone/ptim-helper_svn.bb
index 3461de6225..71b004e92b 100644
--- a/packages/gpephone/ptim-helper_svn.bb
+++ b/packages/gpephone/ptim-helper_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpephone"
PRIORITY = "optional"
LICENSE = "LiPS"
DEPENDS = "gtk+ ptim-headers"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/ptim-manager_svn.bb b/packages/gpephone/ptim-manager_svn.bb
index 5c8042c5d5..da0f4e6af4 100644
--- a/packages/gpephone/ptim-manager_svn.bb
+++ b/packages/gpephone/ptim-manager_svn.bb
@@ -3,7 +3,7 @@ SECTION = "gpephone"
PRIORITY = "optional"
LICENSE = "LiPS"
DEPENDS = "gtk+ ptim-headers libiac"
-PV = "0.1+svn-${SRCDATE}"
+PV = "0.1+svnr-${SRCREV}"
PR = "r2"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/gpephone/quickdial_svn.bb b/packages/gpephone/quickdial_svn.bb
index 4533bf4ee8..2a52510d86 100644
--- a/packages/gpephone/quickdial_svn.bb
+++ b/packages/gpephone/quickdial_svn.bb
@@ -5,11 +5,9 @@ PRIORITY = "optional"
PR = "r0"
PV = "0.0+svnr-${SRCREV}"
-SRCREV_pn-${PN} ?= "1393"
-
DEFAULT_PREFERENCE = "-1"
-DEPENDS = "gtk+ librecord2 libgpephone hiker"
+DEPENDS = "gtk+ librecord2 libgpephone"
inherit gpephone autotools pkgconfig
@@ -17,5 +15,6 @@ SRC_URI = "${GPEPHONE_SVN}"
S = "${WORKDIR}/${PN}"
+EXTRA_OECONF = "--disable-hiker"
FILES_${PN} += "${datadir}/qdial/database"
diff --git a/packages/gpephone/useen_svn.bb b/packages/gpephone/useen_svn.bb
index 93d180ba52..1a180683a7 100644
--- a/packages/gpephone/useen_svn.bb
+++ b/packages/gpephone/useen_svn.bb
@@ -5,8 +5,6 @@ PRIORITY = "optional"
PR = "r0"
PV = "0.0+svnr-${SRCREV}"
-SRCREV_pn-${PN} ?= "1400"
-
DEFAULT_PREFERENCE = "-1"
DEPENDS = "glib-2.0"
diff --git a/packages/gpsdrive/gpsdrive-pda/.mtn2git_empty b/packages/gpsdrive/gpsdrive-pda/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpsdrive/gpsdrive-pda/.mtn2git_empty
diff --git a/packages/gpsdrive/gpsdrive-pda/makefile.patch b/packages/gpsdrive/gpsdrive-pda/makefile.patch
new file mode 100644
index 0000000000..2ec4f6a6d8
--- /dev/null
+++ b/packages/gpsdrive/gpsdrive-pda/makefile.patch
@@ -0,0 +1,16 @@
+--- gpsdrive-2.10pre2-ipaq/Makefile 2007-11-11 13:29:10.000000000 +0300
++++ gpsdrive-2.10pre2-ipaq.patched/Makefile 2008-01-12 19:18:46.000000000 +0300
+@@ -5,11 +5,11 @@
+ STRIP = arm-linux-strip
+
+ DEFS = -DLOCALEDIR=\"/usr/share/locale\" -DDATADIR=\"/usr/share\"
+-INCLUDES = -I. -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo
++INCLUDES = -I. `pkg-config gtk+-2.0 --cflags`
+
+ CFLAGS = -O2 -pipe
+
+-LIBRARIES = -L/usr/lib -lcrypt -lpthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lm -lc
++LIBRARIES = -lcrypt -lpthread -lm -lc `pkg-config gtk+-2.0 --libs`
+ LDFLAGS =
+
+ SOURCES = gpsdrive.c speech_out.c track.c settings.c splash.c gpsserial.c gpsmisc.c \
diff --git a/packages/gpsdrive/gpsdrive-pda_2.10pre2.bb b/packages/gpsdrive/gpsdrive-pda_2.10pre2.bb
new file mode 100644
index 0000000000..6350053768
--- /dev/null
+++ b/packages/gpsdrive/gpsdrive-pda_2.10pre2.bb
@@ -0,0 +1,34 @@
+inherit autotools pkgconfig
+
+PR = "r1"
+DESCRIPTION = "GPS navigation/map display software, PDA-optimized version"
+HOMEPAGE = "http://www.gedanken.demon.co.uk/gpsdrive-ipaq/"
+DEPENDS = "virtual/libc gtk+ libpcre gpsd"
+RDEPENDS_${PN} = "gdk-pixbuf-loader-gif gpsd"
+SECTION = "x11"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+inherit pkgconfig
+
+SRC_URI = "http://www.gedanken.demon.co.uk/gpsdrive-ipaq/gpsdrive-2.10pre2-ipaq-r4.tar.gz \
+ file://makefile.patch;patch=1 "
+
+S = "${WORKDIR}/gpsdrive-2.10pre2-ipaq"
+
+FILES_${PN} = "${bindir}/gpsdrive ${datadir}/gpsdrive ${datadir}/pixmaps ${datadir}/applications"
+FILES_${PN} += "${datadir}/${PN}"
+
+do_compile () {
+ oe_runmake "CC=${CC}" "LD=${CC}" "STRIP=${STRIP}" all
+}
+
+do_install () {
+ mkdir -p ${D}${datadir}
+ cp -a ipkg-data/usr/share/* ${D}${datadir}/
+ cp -a README.iPAQ.txt ${D}${datadir}/gpsdrive
+ cp -a COPYING ${D}${datadir}/gpsdrive
+ cp -a original-docs ${D}${datadir}/gpsdrive
+ mkdir -p ${D}${bindir}
+ install -m 0755 gpsdrive ${D}${bindir}/
+}
diff --git a/packages/gsm/files/stdint.patch b/packages/gsm/files/stdint.patch
new file mode 100644
index 0000000000..bafe54cd44
--- /dev/null
+++ b/packages/gsm/files/stdint.patch
@@ -0,0 +1,17 @@
+--- include/libtapi/tel_bas_types.h~ 2008-01-16 12:48:19.000000000 +0100
++++ include/libtapi/tel_bas_types.h 2008-01-16 12:48:19.000000000 +0100
+@@ -27,13 +27,7 @@
+ /******************************************************************************
+ * Type definitions
+ *****************************************************************************/
+-#ifndef _STDINT_H
+-typedef unsigned long uint32_t;
+-typedef unsigned short uint16_t;
+-typedef unsigned char uint8_t;
+-/* typedef long int32_t; */
+-typedef unsigned int size_t;
+-#endif
++#include <stdint.h>
+
+
+ typedef unsigned long tel_bool_t;
diff --git a/packages/gsm/libgsmd-lips_svn.bb b/packages/gsm/libgsmd-lips_svn.bb
new file mode 100644
index 0000000000..c255245ff1
--- /dev/null
+++ b/packages/gsm/libgsmd-lips_svn.bb
@@ -0,0 +1,15 @@
+BASEPN = "gsmd-lips"
+CONFLICTNAME = "gsmd-devel gsmd"
+
+require gsmd.inc
+
+RPROVIDES_${PN} = "libgsmd0 libgsmd gsmd gsmd-devel libtapi libgsmd-dev"
+
+PV = "0.0+svnr${SRCREV}"
+PR = "r2"
+
+SRC_URI = "svn://projects.linuxtogo.org/svn/gpephone/trunk/source/;module=gsm \
+ file://stdint.patch;patch=1;pnum=0 \
+ file://gsmd \
+ file://default"
+
diff --git a/packages/gtk+/gtk+-2.10.14/small-gtkfilechooser.patch b/packages/gtk+/gtk+-2.10.14/small-gtkfilechooser.patch
new file mode 100644
index 0000000000..7681f1170f
--- /dev/null
+++ b/packages/gtk+/gtk+-2.10.14/small-gtkfilechooser.patch
@@ -0,0 +1,222 @@
+diff -ur gtk+-2.10.14.org/gtk/gtkfilechooserdefault.c gtk+-2.10.14/gtk/gtkfilechooserdefault.c
+--- gtk+-2.10.14.org/gtk/gtkfilechooserdefault.c 2007-07-16 22:44:17.000000000 +0300
++++ gtk+-2.10.14/gtk/gtkfilechooserdefault.c 2008-01-05 01:32:58.000000000 +0200
+@@ -243,7 +243,9 @@
+ /* Icon size for if we can't get it from the theme */
+ #define FALLBACK_ICON_SIZE 16
+
+-#define PREVIEW_HBOX_SPACING 12
++#define PREVIEW_HBOX_SPACING 2
++#define NORMAL_SPACING 2
++#define DOUBLE_SPACING 2
+ #define NUM_LINES 45
+ #define NUM_CHARS 60
+
+@@ -425,6 +427,17 @@
+ static void location_switch_to_path_bar (GtkFileChooserDefault *impl);
+ static void settings_load (GtkFileChooserDefault *impl);
+
++int
++_gtk_is_pda_mode()
++{
++ /* PDA mode is when we have small screen width, plus small overall screen area
++ too. What we want to do when it is active is to prefer vertical packing over
++ horizontal (so we can show user filenames of as long length as possible), yet
++ still layout vertical space in such way so user can be able to see as many
++ files as possible. And of course, we save space overall - no big spacings and
++ borders. */
++ return gdk_screen_width() < 490;
++}
+
+
+ /* Drag and drop interface declarations */
+@@ -689,7 +702,7 @@
+ impl->pending_select_paths = NULL;
+ impl->location_mode = LOCATION_MODE_PATH_BAR;
+
+- gtk_box_set_spacing (GTK_BOX (impl), 12);
++ gtk_box_set_spacing (GTK_BOX (impl), DOUBLE_SPACING);
+
+ impl->tooltips = gtk_tooltips_new ();
+ g_object_ref_sink (impl->tooltips);
+@@ -3603,8 +3616,9 @@
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *widget;
++ gboolean is_pda = _gtk_is_pda_mode();
+
+- vbox = gtk_vbox_new (FALSE, 6);
++ vbox = (is_pda?gtk_hbox_new:gtk_vbox_new) (FALSE, NORMAL_SPACING);
+ gtk_widget_show (vbox);
+
+ /* Shortcuts tree */
+@@ -3614,7 +3628,7 @@
+
+ /* Box for buttons */
+
+- hbox = gtk_hbox_new (TRUE, 6);
++ hbox = (is_pda?gtk_vbox_new:gtk_hbox_new) (TRUE, NORMAL_SPACING);
+ gtk_size_group_add_widget (size_group, hbox);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+@@ -3622,7 +3636,7 @@
+ /* Add bookmark button */
+
+ impl->browse_shortcuts_add_button = button_new (impl,
+- _("_Add"),
++ "",
+ GTK_STOCK_ADD,
+ FALSE,
+ TRUE,
+@@ -3634,14 +3648,22 @@
+ /* Remove bookmark button */
+
+ impl->browse_shortcuts_remove_button = button_new (impl,
+- _("_Remove"),
++ "",
+ GTK_STOCK_REMOVE,
+ FALSE,
+ TRUE,
+ G_CALLBACK (remove_bookmark_button_clicked_cb));
++ if (!is_pda) {
++ /* Remove button is pretty reduntant, as that choice is available from popup menu (and would
++ be intuitively expected to be there; compare that with the "Add to shortucts" in popup
++ in files pane - most users would never try that and never new what shortcuts are).
++ If we suspect we can be short of screen space (PDA device is what often has portrait
++ layout), don't pack it, to allow more visually pleasing layout when minimizing location
++ pane. Note that we still instantiate it, as it is referenced thruout the code. */
+ gtk_box_pack_start (GTK_BOX (hbox), impl->browse_shortcuts_remove_button, TRUE, TRUE, 0);
+ gtk_tooltips_set_tip (impl->tooltips, impl->browse_shortcuts_remove_button,
+ _("Remove the selected bookmark"), NULL);
++ }
+
+ return vbox;
+ }
+@@ -4221,7 +4243,7 @@
+ GtkWidget *hbox;
+ GtkWidget *widget;
+
+- vbox = gtk_vbox_new (FALSE, 6);
++ vbox = gtk_vbox_new (FALSE, NORMAL_SPACING);
+ gtk_widget_show (vbox);
+
+ /* Box for lists and preview */
+@@ -4237,13 +4259,13 @@
+
+ /* Preview */
+
+- impl->preview_box = gtk_vbox_new (FALSE, 12);
++ impl->preview_box = gtk_vbox_new (FALSE, DOUBLE_SPACING);
+ gtk_box_pack_start (GTK_BOX (hbox), impl->preview_box, FALSE, FALSE, 0);
+ /* Don't show preview box initially */
+
+ /* Filter combo */
+
+- impl->filter_combo_hbox = gtk_hbox_new (FALSE, 12);
++ impl->filter_combo_hbox = gtk_hbox_new (FALSE, DOUBLE_SPACING);
+
+ widget = filter_create (impl);
+
+@@ -4336,13 +4358,13 @@
+
+ location_switch_to_path_bar (impl);
+
+- vbox = gtk_vbox_new (FALSE, 12);
++ vbox = gtk_vbox_new (FALSE, DOUBLE_SPACING);
+
+ table = gtk_table_new (2, 2, FALSE);
+ gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
+ gtk_widget_show (table);
+- gtk_table_set_row_spacings (GTK_TABLE (table), 12);
+- gtk_table_set_col_spacings (GTK_TABLE (table), 12);
++ gtk_table_set_row_spacings (GTK_TABLE (table), DOUBLE_SPACING);
++ gtk_table_set_col_spacings (GTK_TABLE (table), DOUBLE_SPACING);
+
+ /* Label */
+
+@@ -4653,10 +4675,10 @@
+
+ /* size group is used by the [+][-] buttons and the filter combo */
+ size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
+- vbox = gtk_vbox_new (FALSE, 12);
++ vbox = gtk_vbox_new (FALSE, DOUBLE_SPACING);
+
+ /* Location widgets */
+- hbox = gtk_hbox_new (FALSE, 12);
++ hbox = gtk_hbox_new (FALSE, DOUBLE_SPACING);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+
+@@ -4678,7 +4700,7 @@
+
+ /* Box for the location label and entry */
+
+- impl->location_entry_box = gtk_hbox_new (FALSE, 12);
++ impl->location_entry_box = gtk_hbox_new (FALSE, DOUBLE_SPACING);
+ gtk_box_pack_start (GTK_BOX (vbox), impl->location_entry_box, FALSE, FALSE, 0);
+
+ impl->location_label = gtk_label_new_with_mnemonic (_("_Location:"));
+@@ -4686,12 +4708,16 @@
+ gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_label, FALSE, FALSE, 0);
+
+ /* Paned widget */
+- hpaned = gtk_hpaned_new ();
++ if (_gtk_is_pda_mode())
++ hpaned = gtk_vpaned_new ();
++ else
++ hpaned = gtk_hpaned_new ();
++
+ gtk_widget_show (hpaned);
+ gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0);
+
+ widget = shortcuts_pane_create (impl, size_group);
+- gtk_paned_pack1 (GTK_PANED (hpaned), widget, FALSE, FALSE);
++ gtk_paned_pack1 (GTK_PANED (hpaned), widget, FALSE, TRUE); /* Shortcuts can shrink beyond requested size */
+ widget = file_pane_create (impl, size_group);
+ gtk_paned_pack2 (GTK_PANED (hpaned), widget, TRUE, FALSE);
+
+diff -ur gtk+-2.10.14.org/gtk/gtkfilechooserdialog.c gtk+-2.10.14/gtk/gtkfilechooserdialog.c
+--- gtk+-2.10.14.org/gtk/gtkfilechooserdialog.c 2007-07-16 22:44:16.000000000 +0300
++++ gtk+-2.10.14/gtk/gtkfilechooserdialog.c 2008-01-05 01:28:35.000000000 +0200
+@@ -32,8 +32,12 @@
+
+ #include <stdarg.h>
+
++#define NORMAL_SPACING 2
++#define DOUBLE_SPACING 2
++
+ #define GTK_FILE_CHOOSER_DIALOG_GET_PRIVATE(o) (GTK_FILE_CHOOSER_DIALOG (o)->priv)
+
++extern int _gtk_is_pda_mode(void);
+ static void gtk_file_chooser_dialog_finalize (GObject *object);
+
+ static GObject* gtk_file_chooser_dialog_constructor (GType type,
+@@ -162,8 +166,13 @@
+
+ gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+
+- if (width)
+- *width = MIN (*width, (monitor.width * 3) / 4);
++ if (width) {
++ if (_gtk_is_pda_mode())
++ /* If width is physically small, use it all */
++ *width = monitor.width;
++ else
++ *width = MIN (*width, (monitor.width * 3) / 4);
++ }
+
+ if (height)
+ *height = MIN (*height, (monitor.height * 3) / 4);
+@@ -430,8 +439,8 @@
+ * http://developer.gnome.org/projects/gup/hig/1.0/windows.html#alert-spacing
+ */
+
+- gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox), 12);
+- gtk_box_set_spacing (GTK_BOX (dialog->vbox), 24);
++ gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox), DOUBLE_SPACING);
++ gtk_box_set_spacing (GTK_BOX (dialog->vbox), DOUBLE_SPACING * 2);
+
+ gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 0);
+ gtk_box_set_spacing (GTK_BOX (dialog->action_area), 6);
+Only in gtk+-2.10.14/.pc/migration.patch/gtk: gtkmigration.c
+Only in gtk+-2.10.14: small-gtkfilechooser.patch
diff --git a/packages/gtk+/gtk+_2.10.14.bb b/packages/gtk+/gtk+_2.10.14.bb
index 3efe492d34..d8ae8ae9ba 100644
--- a/packages/gtk+/gtk+_2.10.14.bb
+++ b/packages/gtk+/gtk+_2.10.14.bb
@@ -1,6 +1,6 @@
require gtk-2.10.inc
-PR = "r7"
+PR = "r8"
SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
file://no-xwc.patch;patch=1 \
@@ -11,6 +11,7 @@ SRC_URI = "ftp://ftp.gtk.org/pub/gtk/v2.10/gtk+-${PV}.tar.bz2 \
file://xsettings.patch;patch=1 \
file://scroll-timings.patch;patch=1 \
file://small-gtkfilesel.patch;patch=1 \
+ file://small-gtkfilechooser.patch;patch=1 \
file://migration.patch;patch=1;pnum=0 \
file://run-iconcache.patch;patch=1 \
file://hardcoded_libtool.patch;patch=1 \
diff --git a/packages/hal/hal_0.5.9.bb b/packages/hal/hal_0.5.9.bb
index 064e7985ca..e835f80434 100644
--- a/packages/hal/hal_0.5.9.bb
+++ b/packages/hal/hal_0.5.9.bb
@@ -5,7 +5,7 @@ RDEPENDS += "udev hal-info"
#RDEPENDS_hal-device-manager = "python hal python-pygnome"
RRECOMMENDS = "udev-utils"
-PR = "r4"
+PR = "r5"
SRC_URI += "file://99_hal \
file://20hal \
@@ -38,10 +38,12 @@ do_install_append() {
}
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
+ oe_libinstall -C libhal -a -so libhal ${STAGING_LIBDIR}
+ oe_libinstall -C libhal-storage -a -so libhal-storage ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/hal
+ install -m 0644 libhal/libhal.h ${STAGING_INCDIR}/hal
+ install -m 0644 libhal-storage/libhal-storage.h ${STAGING_INCDIR}/hal
}
# At the time the postinst runs, dbus might not be setup so only restart if running
diff --git a/packages/imagemagick/imagemagick-native_6.3.5-10.bb b/packages/imagemagick/imagemagick-native_6.3.5-10.bb
new file mode 100644
index 0000000000..b03e18e9c1
--- /dev/null
+++ b/packages/imagemagick/imagemagick-native_6.3.5-10.bb
@@ -0,0 +1,3 @@
+require imagemagick_${PV}.bb
+DEPENDS ="libtool-native"
+inherit native
diff --git a/packages/images/openmoko-python-devel-image.bb b/packages/images/openmoko-python-devel-image.bb
new file mode 100644
index 0000000000..9d2a8db2c6
--- /dev/null
+++ b/packages/images/openmoko-python-devel-image.bb
@@ -0,0 +1,6 @@
+require openmoko-image.bb
+
+IMAGE_INSTALL += "\
+ task-openmoko-python-devel \
+"
+
diff --git a/packages/images/openprotium-image.bb b/packages/images/openprotium-image.bb
index 818fd0b186..0f64ba2052 100644
--- a/packages/images/openprotium-image.bb
+++ b/packages/images/openprotium-image.bb
@@ -1,128 +1,28 @@
DESCRIPTION = "OpenProtium image"
HOMEPAGE = "http://www.openprotium.com"
-DEPENDS = "${MACHINE_TASK_PROVIDER}"
-EXTRA_IMAGECMD_jffs2 = "--pad --big-endian --eraseblock=0x10000 -D ${SLUGOS_DEVICE_TABLE}"
+DEPENDS = "task-openprotium"
+IMAGE_INSTALL = "task-openprotium"
IMAGE_LINGUAS = ""
-# Setting USE_DEVFS prevents *any* entries being created initially
-# in /dev
-USE_DEVFS = "1"
+IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}"
+PACKAGE_REMOVE = "kernel-image-* task-openprotium"
-# This is passed to the image command to build the correct /dev
-# directory (because only the image program can make actual
-# dev entries!)
-SLUGOS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
+USE_DEVFS = "1"
+OPENPROTIUM_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-minimal-add-md.txt')}"
+EXTRA_IMAGECMD_jffs2 += " -D ${OPENPROTIUM_DEVICE_TABLE}"
-# IMAGE_PREPROCESS_COMMAND is run before making the image.
-# We use this to do a few things:
-# . remove the uImage, which is in a separate part of the flash already.
-# . adjust the default run level (sysvinit is 5 by default, we like 3)
-# . set a default root password, which is no more secure than a blank one
-# (since it is documented, in case you were wondering)
-# . make the boot more verbose
-#
-IMAGE_PREPROCESS_COMMAND += "rm ${IMAGE_ROOTFS}/boot/uImage-*;"
-IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND += "install -c -m 644 ${OPENPROTIUM_DEVICE_TABLE} ${IMAGE_ROOTFS}/etc/device_table;"
+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 += "sed -i -es,^VOLATILE_ENABLE_CACHE=yes,VOLATILE_ENABLE_CACHE=no, ${IMAGE_ROOTFS}/etc/default/rcS;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,/dev/tty0,/dev/console, ${IMAGE_ROOTFS}/etc/init.d/populate-volatile.sh;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/md >> ${IMAGE_ROOTFS}/etc/udev/mount.blacklist;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/hd >> ${IMAGE_ROOTFS}/etc/udev/mount.blacklist;"
+IMAGE_PREPROCESS_COMMAND += "echo /dev/mtd3 0x30000 0x10000 0x10000 > ${IMAGE_ROOTFS}/etc/fw_env.config;"
-# Always just make a new flash image.
-PACK_IMAGE = 'storcenter_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.
-# but we want 'storcenter' in there so kernel modules work correctly.
-#
-#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 to 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.)
-# we'ere still on 2.6.12 devfs....
-#OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils udev"
-#
-OPENPROTIUM_SUPPORT ?= "diffutils cpio findutils uboot-utils"
-
-# kernel-module-af-packet must be in the image for DHCP to work
-# kernel-module-netconsole is here because it is small and is
-# highly useful on minimal systems (which really don't have anywhere
-# other than the network to output error messages!)
-SLUGOS_KERNEL ?= "kernel-module-af-packet kernel-module-netconsole \
- kernel-module-mii "
-
-# this gets /lib/modules made....
-OPENPROTIUM_KERNEL = "kernel-module-dummy \
- kernel-module-af-packet "
-
-IMAGE_INSTALL = " \
- kernel base-files base-passwd netbase \
- busybox initscripts-openprotium openprotium-init \
- update-modules sysvinit tinylogin \
- module-init-tools-depmod modutils-initscripts \
- ipkg-collateral ipkg ipkg-link \
- libgcc1 \
- portmap \
- dropbear \
- e2fsprogs-blkid \
- mdadm \
- hdparm \
- mtd-utils \
- ${OPENPROTIUM_SUPPORT} \
- ${OPENPROTIUM_KERNEL} "
-# ${SLUGOS_EXTRA_RDEPENDS}"
-
-inherit image
+ROOTFS_POSTPROCESS_COMMAND += "ipkg-cl ${IPKG_ARGS} -force-depends \
+ remove ${PACKAGE_REMOVE};"
-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
-}
+inherit image concatenated-image
diff --git a/packages/images/opie-image-16mb.bb b/packages/images/opie-image-16mb.bb
index 06bcdad7e8..42bf611880 100644
--- a/packages/images/opie-image-16mb.bb
+++ b/packages/images/opie-image-16mb.bb
@@ -13,50 +13,7 @@ IMAGE_INSTALL = "task-boot \
task-opie-16mb-pim \
task-opie-irda"
-# merge feed-sources into ipkg.conf for opie-aqpkg as it can't handle feed-sources outside of ipkg.conf.
-merge_feeds() {
-
- if ! test -z "${FEED_URIS}"
- then
- # Die gracefully if ipkg-collateral failed
- if ! test -e "${IMAGE_ROOTFS}/etc/ipkg.conf"
- then
- echo "[${IMAGE_ROOTFS}/etc/ipkg.conf] is missing!"
- exit 1
- fi
-
- # comment out existing feed-sources inserted by ipkg-collateral
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | sed "s/^src\ /#src\ /" > ${IMAGE_ROOTFS}/etc/ipkg.conf_
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf
-
- # extract, then delete destinations
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf.dest
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep -v "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf_
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf
-
-
- for line in ${FEED_URIS}
- do
- # strip leading and trailing spaces/tabs, then split into name and uri
- line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`"
- feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`"
- feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`"
-
- # insert new feed-sources
- echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- done
-
- # remove temporary files and rebuild ipkg.conf
- echo "" >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf.dest >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf.dest
-
- # remove -feed.conf files which are no longer needed
- cd ${IMAGE_ROOTFS}/etc/ipkg/ && rm -- *-feed.conf
- fi
-}
-
-# merge feed-sources into ipkg.conf and create /etc/timestamp from build date
+# create /etc/timestamp from build date
IMAGE_PREPROCESS_COMMAND = "merge_feeds; create_etc_timestamp"
inherit image
diff --git a/packages/images/opie-image.bb b/packages/images/opie-image.bb
index 1f1130204a..04c1f260e8 100644
--- a/packages/images/opie-image.bb
+++ b/packages/images/opie-image.bb
@@ -9,50 +9,7 @@ IMAGE_INSTALL = "${MACHINE_TASK_PROVIDER} task-opie-base task-opie-base-applets
task-opie-extra-settings \
task-opie-bluetooth task-opie-irda "
-# merge feed-sources into ipkg.conf for opie-aqpkg as it can't handle feed-sources outside of ipkg.conf.
-merge_feeds() {
-
- if ! test -z "${FEED_URIS}"
- then
- # Die gracefully if ipkg-collateral failed
- if ! test -e "${IMAGE_ROOTFS}/etc/ipkg.conf"
- then
- echo "[${IMAGE_ROOTFS}/etc/ipkg.conf] is missing!"
- exit 1
- fi
-
- # comment out existing feed-sources inserted by ipkg-collateral
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | sed "s/^src\ /#src\ /" > ${IMAGE_ROOTFS}/etc/ipkg.conf_
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf
-
- # extract, then delete destinations
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf.dest
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep -v "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf_
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf
-
-
- for line in ${FEED_URIS}
- do
- # strip leading and trailing spaces/tabs, then split into name and uri
- line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`"
- feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`"
- feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`"
-
- # insert new feed-sources
- echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- done
-
- # remove temporary files and rebuild ipkg.conf
- echo "" >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- cat ${IMAGE_ROOTFS}/etc/ipkg.conf.dest >> ${IMAGE_ROOTFS}/etc/ipkg.conf
- rm ${IMAGE_ROOTFS}/etc/ipkg.conf.dest
-
- # remove -feed.conf files which are no longer needed
- cd ${IMAGE_ROOTFS}/etc/ipkg/ && rm -- *-feed.conf
- fi
-}
-
-# merge feed-sources into ipkg.conf and create /etc/timestamp from build date
-IMAGE_PREPROCESS_COMMAND = "merge_feeds; create_etc_timestamp"
+# create /etc/timestamp from build date
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
inherit image
diff --git a/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh b/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
index c69a773482..6b63b07188 100755
--- a/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
+++ b/packages/initscripts/initscripts-1.0/openprotium/checkroot.sh
@@ -205,7 +205,7 @@ then
: > /etc/mtab
fi
mount -f -o remount /
- mount -f /proc
+ grep -q '^proc /proc' /etc/mtab || mount -f /proc
test "$devfs" && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
fi
diff --git a/packages/initscripts/initscripts-1.0/openprotium/mountall.sh b/packages/initscripts/initscripts-1.0/openprotium/mountall.sh
new file mode 100644
index 0000000000..94ea8217fd
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/mountall.sh
@@ -0,0 +1,27 @@
+#
+# 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 -at nonfs,nosmbfs,noncpfs 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
+
+: exit 0
+
diff --git a/packages/initscripts/initscripts-1.0/openprotium/umountfs b/packages/initscripts/initscripts-1.0/openprotium/umountfs
new file mode 100755
index 0000000000..e489c4c1cd
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/umountfs
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# umountfs Turn off swap and unmount all local filesystems.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+echo "Deactivating swap..."
+swapoff -a
+
+# We leave /proc mounted.
+echo "Unmounting local filesystems..."
+# umount anything not a pseudo file system, and not root
+# doesn't work for nested mounts at a non-root mount point
+while read device mountpt fstype options
+do
+ echo "$device" | grep -q "^/"
+ if [ $? -eq 0 ]; then
+ if [ "$mountpt" != "/" ] && [ "$mountpt" != "/dev/" ]; then
+ umount $mountpt
+ fi
+ fi
+done</proc/mounts
+
+mount -o remount,ro /
+
+: exit 0
diff --git a/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh b/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh
new file mode 100644
index 0000000000..6ee0d50e84
--- /dev/null
+++ b/packages/initscripts/initscripts-1.0/openprotium/umountinitrd.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# umount the static dev - we'd probably never use it.
+#
+[ -d /dev/.static/dev ] && umount /dev/.static/dev
+#
+# if a root is found on an ext* filesystem, umount the old initrd
+#
+grep -q "/ ext" /proc/mounts
+if [ $? -eq 0 ]; then
+ umount /initrd
+fi
diff --git a/packages/initscripts/initscripts-openprotium_1.0.bb b/packages/initscripts/initscripts-openprotium_1.0.bb
index 83e89ef7a1..890bbd756c 100644
--- a/packages/initscripts/initscripts-openprotium_1.0.bb
+++ b/packages/initscripts/initscripts-openprotium_1.0.bb
@@ -24,16 +24,16 @@ SRC_URI += "file://openprotium/halt"
SRC_URI += "file://openprotium/reboot"
SRC_URI += "file://openprotium/flashclean"
SRC_URI += "file://openprotium/checkroot.sh"
+SRC_URI += "file://openprotium/mountall.sh"
+SRC_URI += "file://openprotium/umountinitrd.sh"
+SRC_URI += "file://openprotium/umountfs"
# Without this it is not possible to patch checkroot.sh
S = "${WORKDIR}"
do_install_append() {
- # the image build command now installs this for slugos
- # except that mine doesn't. we don't need it, but we turnup
- # expects it to at least exist
- rm ${D}${sysconfdir}/device_table
- touch ${D}${sysconfdir}/device_table
+ #rm ${D}${sysconfdir}/device_table
+ #touch ${D}${sysconfdir}/device_table
# openprotium specific scripts
# install -m 0755 ${WORKDIR}/alignment.sh ${D}${sysconfdir}/init.d
@@ -44,6 +44,8 @@ do_install_append() {
install -m 0755 ${WORKDIR}/openprotium/devices ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/openprotium/flashclean ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/openprotium/checkroot.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/mountall.sh ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/openprotium/umountinitrd.sh ${D}${sysconfdir}/init.d
# Remove the do install links (this detects a change to the
# initscripts .bb file - it will cause a build failure here.)
@@ -130,7 +132,7 @@ do_install_append() {
# slugos network syslog starts here (44)
update-rc.d -r ${D} mountnfs.sh start 45 S .
- update-rc.d -r ${D} bootmisc.sh start 55 S .
+ # update-rc.d -r ${D} bootmisc.sh start 55 S .
# urandom is currently disabled from S 55 (and won't work with tmpfs /var)
# ipkg-cl configure runs at S 98
@@ -158,7 +160,7 @@ do_install_append() {
# This is the special, correct, slugos umountnfs.sh (it looks in
# the /proc/mounts information, not /etc/fstab)
update-rc.d -r ${D} umountnfs.sh start 31 0 6 .
- update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
+ # update-rc.d -r ${D} save-rtc.sh start 25 0 6 .
# portmap stops at 32
# slugos network syslog stops here (39)
# networking stops at 40 (nothing else does, believe me.)
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 23d73ebae6..3101ecb3be 100644
--- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
+++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb
@@ -8,7 +8,7 @@ inherit native
# Avoid circular dependencies from package_ipk.bbclass
PACKAGES = ""
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/ipkg-utils"
-INSTALL += "ipkg-list-fields arfile.py"
+INSTALL += "arfile.py"
do_stage() {
for i in ${INSTALL}; do
diff --git a/packages/jamvm/files/.mtn2git_empty b/packages/jamvm/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/jamvm/files/.mtn2git_empty
diff --git a/packages/jamvm/jamvm/jamvm-1.3.1-size-defaults.patch b/packages/jamvm/files/jamvm-1.3.1-size-defaults.patch
index a41beee982..a41beee982 100644
--- a/packages/jamvm/jamvm/jamvm-1.3.1-size-defaults.patch
+++ b/packages/jamvm/files/jamvm-1.3.1-size-defaults.patch
diff --git a/packages/jamvm/files/jamvm_1.5.0-initial.patch b/packages/jamvm/files/jamvm_1.5.0-initial.patch
new file mode 100644
index 0000000000..9b972da014
--- /dev/null
+++ b/packages/jamvm/files/jamvm_1.5.0-initial.patch
@@ -0,0 +1,82 @@
+Index: jamvm-1.5.0/configure.ac
+===================================================================
+--- jamvm-1.5.0.orig/configure.ac 2007-12-20 00:01:08.000000000 +0100
++++ jamvm-1.5.0/configure.ac 2007-12-20 00:03:40.000000000 +0100
+@@ -22,7 +22,7 @@
+ dnl Process this file with autoconf to produce a configure script.
+
+ AC_INIT(src/jam.c)
+-AM_INIT_AUTOMAKE(jamvm, 1.5.0)
++AM_INIT_AUTOMAKE(jamvm-initial, 1.5.0)
+ AC_CONFIG_HEADERS([src/config.h])
+ AC_PREFIX_DEFAULT(/usr/local/jamvm)
+
+Index: jamvm-1.5.0/java-initial
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ jamvm-1.5.0/java-initial 2007-12-20 00:03:27.000000000 +0100
+@@ -0,0 +1,5 @@
++#!/bin/sh
++#
++# Wrapper script inspired by the one provided by cacao.
++
++exec jamvm-initial ${1+"$@"}
+Index: jamvm-1.5.0/lib/Makefile.am
+===================================================================
+--- jamvm-1.5.0.orig/lib/Makefile.am 2007-12-20 00:05:24.000000000 +0100
++++ jamvm-1.5.0/lib/Makefile.am 2007-12-20 00:05:28.000000000 +0100
+@@ -19,7 +19,7 @@
+ ## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ##
+
+-CP_LIB_DIR = ${with_classpath_install_dir}/share/classpath
++CP_LIB_DIR = ${with_classpath_install_dir}/share/classpath-initial
+ GLIBJ_ZIP = ${CP_LIB_DIR}/glibj.zip
+
+ SUBDIRS = jamvm java gnu sun
+Index: jamvm-1.5.0/src/class.h
+===================================================================
+--- jamvm-1.5.0.orig/src/class.h 2007-12-20 00:06:34.000000000 +0100
++++ jamvm-1.5.0/src/class.h 2007-12-20 00:16:41.000000000 +0100
+@@ -39,11 +39,11 @@
+ separate class files in a directory structure */
+
+ #ifdef USE_ZIP
+-#define JAMVM_CLASSES INSTALL_DIR"/share/jamvm/classes.zip"
+-#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath/glibj.zip"
++#define JAMVM_CLASSES CLASSPATH_INSTALL_DIR"/share/jamvm-initial/classes.zip"
++#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath-initial/glibj.zip"
+ #else
+-#define JAMVM_CLASSES INSTALL_DIR"/share/jamvm/classes"
+-#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath"
++#define JAMVM_CLASSES CLASSPATH_INSTALL_DIR"/share/jamvm-initial/classes"
++#define CLASSPATH_CLASSES CLASSPATH_INSTALL_DIR"/share/classpath-initial"
+ #endif
+
+ #define DFLT_BCP JAMVM_CLASSES":"CLASSPATH_CLASSES
+Index: jamvm-1.5.0/src/dll.c
+===================================================================
+--- jamvm-1.5.0.orig/src/dll.c 2007-12-20 00:01:24.000000000 +0100
++++ jamvm-1.5.0/src/dll.c 2007-12-20 00:03:27.000000000 +0100
+@@ -294,7 +294,7 @@
+ }
+
+ char *getBootDllPath() {
+- return CLASSPATH_INSTALL_DIR"/lib/classpath";
++ return CLASSPATH_INSTALL_DIR"/lib/classpath-initial";
+ }
+
+ char *getDllName(char *name) {
+Index: jamvm-1.5.0/src/Makefile.am
+===================================================================
+--- jamvm-1.5.0.orig/src/Makefile.am 2007-12-20 00:21:37.000000000 +0100
++++ jamvm-1.5.0/src/Makefile.am 2007-12-20 00:21:46.000000000 +0100
+@@ -23,7 +23,7 @@
+ DIST_SUBDIRS = os arch interp
+
+ bin_PROGRAMS = jamvm
+-include_HEADERS = jni.h
++noinst_HEADERS = jni.h
+
+ lib_LTLIBRARIES = libjvm.la
+ noinst_LTLIBRARIES = libcore.la
diff --git a/packages/jamvm/jamvm-initial_1.5.0.bb b/packages/jamvm/jamvm-initial_1.5.0.bb
new file mode 100644
index 0000000000..3369733340
--- /dev/null
+++ b/packages/jamvm/jamvm-initial_1.5.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "A compact Java Virtual Machine which conforms to the JVM specification version 2."
+HOMEPAGE = "http://jamvm.sourceforge.net/"
+LICENSE = "GPL"
+
+DEPENDS = "zlib-native classpath-initial jikes-initial"
+
+PROVIDES = "virtual/java-initial"
+
+S = "${WORKDIR}/jamvm-${PV}"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/jamvm/jamvm-${PV}.tar.gz \
+ file://jamvm_${PV}-initial.patch;patch=1;pnum=1 \
+ "
+
+# This uses 32 bit arm, so force the instruction set to arm, not thumb
+ARM_INSTRUCTION_SET = "arm"
+
+inherit native autotools
+
+EXTRA_OECONF = "\
+ --with-classpath-install-dir=${STAGING_DIR_NATIVE}\
+ --program-suffix=-initial \
+ "
+
+CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"
+
+do_compile() {
+ oe_runmake \
+ JAVAC=jikes-initial \
+ GLIBJ_ZIP=${STAGING_DATADIR_NATIVE}/classpath-initial/glibj.zip
+}
+
+do_stage_append() {
+ install -d ${STAGING_BINDIR}
+ install -m 0755 java-initial ${STAGING_BINDIR}
+}
diff --git a/packages/jamvm/jamvm.inc b/packages/jamvm/jamvm.inc
new file mode 100644
index 0000000000..36378370c5
--- /dev/null
+++ b/packages/jamvm/jamvm.inc
@@ -0,0 +1,22 @@
+DESCRIPTION = "A compact Java Virtual Machine which conforms to the JVM specification version 2."
+HOMEPAGE = "http://jamvm.sourceforge.net/"
+LICENSE = "GPL"
+
+DEPENDS = "zlib classpath virtual/javac-native"
+RDEPENDS = "classpath"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/jamvm/jamvm-${PV}.tar.gz"
+
+RPROVIDES_jamvm = "java2-runtime"
+
+# This uses 32 bit arm, so force the instruction set to arm, not thumb
+ARM_INSTRUCTION_SET = "arm"
+
+inherit autotools update-alternatives
+
+EXTRA_OECONF = "--with-classpath-install-dir=${prefix}"
+CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"
+
+ALTERNATIVE_NAME = "java"
+ALTERNATIVE_PATH = "${bindir}/jamvm"
+ALTERNATIVE_PRIORITY = "10"
diff --git a/packages/jamvm/jamvm/sh3sh4-support.patch b/packages/jamvm/jamvm/sh3sh4-support.patch
deleted file mode 100644
index 8fa0d8c161..0000000000
--- a/packages/jamvm/jamvm/sh3sh4-support.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.ac_orig 2006-05-10 21:48:31.000000000 +0000
-+++ configure.ac 2006-05-10 21:49:56.000000000 +0000
-@@ -66,6 +66,8 @@
- arm*-*-linux*) host_cpu=arm host_os=linux ;;
- arm*-*-openbsd*) host_cpu=arm host_os=linux libdl_needed=no ;;
- arm*-*-freebsd*) host_cpu=arm host_os=linux libdl_needed=no ;;
-+sh3-*-linux*) host_cpu=sh3 host_os=linux libdl_needed=no ;;
-+sh4-*-linux*) host_cpu=sh4 host_os=linux libdl_needed=no ;;
- powerpc*-*-linux*) host_cpu=powerpc host_os=linux ;;
- powerpc*-*-openbsd*) host_cpu=powerpc host_os=linux libdl_needed=no ;;
- powerpc*-*-freebsd*) host_cpu=powerpc host_os=linux libdl_needed=no ;;
diff --git a/packages/jamvm/jamvm_1.4.5.bb b/packages/jamvm/jamvm_1.4.5.bb
index 489b4fb94b..3cc0431266 100644
--- a/packages/jamvm/jamvm_1.4.5.bb
+++ b/packages/jamvm/jamvm_1.4.5.bb
@@ -1,24 +1,4 @@
-DESCRIPTION = "A compact Java Virtual Machine which conforms to the JVM specification version 2."
-HOMEPAGE = "http://jamvm.sourceforge.net/"
-LICENSE = "GPL"
-PRIORITY = "optional"
-SECTION = "interpreters"
+require jamvm.inc
-DEPENDS = "zlib classpath"
-RDEPENDS = "classpath (>= 0.18) classpath-common (>= 0.18)"
+SRC_URI += "file://jamvm-1.3.1-size-defaults.patch;patch=1"
-SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz \
- file://jamvm-1.3.1-size-defaults.patch;patch=1"
-
-# This uses 32 bit arm, so force the instruction set to arm, not thumb
-ARM_INSTRUCTION_SET = "arm"
-
-inherit autotools update-alternatives
-
-EXTRA_OECONF = "--with-classpath-install-dir=${prefix}"
-CFLAGS += "-DDEFAULT_MAX_HEAP=16*MB"
-
-PROVIDES = "virtual/java"
-ALTERNATIVE_NAME = "java"
-ALTERNATIVE_PATH = "${bindir}/jamvm"
-ALTERNATIVE_PRIORITY = "10"
diff --git a/packages/jamvm/jamvm_1.5.0.bb b/packages/jamvm/jamvm_1.5.0.bb
new file mode 100644
index 0000000000..efa959f0f9
--- /dev/null
+++ b/packages/jamvm/jamvm_1.5.0.bb
@@ -0,0 +1,5 @@
+require jamvm.inc
+
+PR = "r0"
+
+
diff --git a/packages/jikes/jikes-initial.bb b/packages/jikes/jikes-initial.bb
new file mode 100644
index 0000000000..0e2f4d0748
--- /dev/null
+++ b/packages/jikes/jikes-initial.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Initial Java 1.4-compatible (and not higher) compiler"
+
+DEPENDS = "jikes-native classpath-initial"
+
+SRC_URI = ""
+
+S = "${WORKDIR}"
+
+inherit native
+
+do_configure() {
+ :
+}
+
+do_compile() {
+ echo "#!/bin/sh" > jikes-initial
+ echo "${STAGING_BINDIR_NATIVE}/jikes -bootclasspath ${STAGING_DATADIR_NATIVE}/classpath-initial/glibj.zip \$@" >> jikes-initial
+}
+
+do_stage() {
+ install -d ${STAGING_BINDIR}
+ install -m 0755 jikes-initial ${STAGING_BINDIR}
+}
diff --git a/packages/jikes/jikes-native_1.21.bb b/packages/jikes/jikes-native_1.21.bb
index 2996046639..b95cbfcd75 100644
--- a/packages/jikes/jikes-native_1.21.bb
+++ b/packages/jikes/jikes-native_1.21.bb
@@ -1,7 +1,6 @@
inherit native
require jikes_${PV}.bb
-PROVIDES = "virtual/javac-native"
S = "${WORKDIR}/jikes-${PV}"
do_stage() {
diff --git a/packages/kaffe/kaffe.inc b/packages/kaffe/kaffe.inc
index 2d536b3dea..2ae0929a93 100644
--- a/packages/kaffe/kaffe.inc
+++ b/packages/kaffe/kaffe.inc
@@ -2,7 +2,7 @@ DESCRIPTION = "Kaffe is a clean room implementation of the Java Virtual Machine"
HOMEPAGE = "http://www.kaffe.org/"
LICENSE = "GPL LGPL W3C Classpath BSD"
-DEPENDS = "jikes-native fastjar-native libffi zip-native"
+DEPENDS = "virtual/javac-native fastjar-native libffi zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI += "file://disable-automake-checks.patch;patch=1"
diff --git a/packages/libsdl/libsdl-mixer_1.2.6.bb b/packages/libsdl/libsdl-mixer_1.2.6.bb
index f78d992806..84841d9741 100644
--- a/packages/libsdl/libsdl-mixer_1.2.6.bb
+++ b/packages/libsdl/libsdl-mixer_1.2.6.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "Simple DirectMedia Layer mixer library."
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "virtual/libsdl"
+DEPENDS = "virtual/libsdl libmikmod"
LICENSE = "LGPL"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${PV}.tar.gz"
S = "${WORKDIR}/SDL_mixer-${PV}"
@@ -12,7 +12,7 @@ export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
inherit autotools
-EXTRA_OECONF = "--disable-music-mp3 --disable-music-libmikmod"
+EXTRA_OECONF = "--disable-music-mp3"
# although we build smpeg... need to find out how
# to deal with optional dependencies
diff --git a/packages/libtool/libtool-1.5.6/.mtn2git_empty b/packages/libtool/libtool-1.5.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/libtool/libtool-1.5.6/.mtn2git_empty
diff --git a/packages/libtool/libtool-1.5.6/autotools.patch b/packages/libtool/libtool-1.5.6/autotools.patch
new file mode 100644
index 0000000000..5df441e945
--- /dev/null
+++ b/packages/libtool/libtool-1.5.6/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.6.bb b/packages/libtool/libtool_1.5.6.bb
new file mode 100644
index 0000000000..2deb7df15c
--- /dev/null
+++ b/packages/libtool/libtool_1.5.6.bb
@@ -0,0 +1,38 @@
+# Exists for compatibility with certain distributions (e.g. Maemo).
+
+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 = "r2"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
+ file://autotools.patch;patch=1"
+S = "${WORKDIR}/libtool-${PV}"
+
+PACKAGES = "libltdl libltdl-dbg libltdl-dev ${PN} ${PN}-doc"
+FILES_${PN} += "${datadir}/aclocal*"
+FILES_libltdl = "${libdir}/libltdl.so.*"
+FILES_libltdl-dev = "${libdir}/libltdl.* ${includedir}/ltdl.h"
+FILES_libltdl-dbg = "${libdir}/.debug/"
+
+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/linux/chumby-kernel/.mtn2git_empty b/packages/linux/chumby-kernel/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/chumby-kernel/.mtn2git_empty
diff --git a/packages/linux/chumby-kernel/defconfig b/packages/linux/chumby-kernel/defconfig
new file mode 100644
index 0000000000..0fa62db9f8
--- /dev/null
+++ b/packages/linux/chumby-kernel/defconfig
@@ -0,0 +1,1248 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.16
+# Mon May 21 07:33:23 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_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION="-csb"
+CONFIG_LOCALVERSION_AUTO=y
+# 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_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=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+CONFIG_SLAB=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+
+#
+# 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 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_FAMILY_IMX=y
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_AT91RM9200 is not set
+
+#
+# IMX Implementations
+#
+# CONFIG_ARCH_MX1ADS is not set
+# CONFIG_MACH_CSB535 is not set
+CONFIG_MACH_MX21ADS=y
+# CONFIG_MACH_TCMX21 is not set
+# CONFIG_MACH_CSB536 is not set
+CONFIG_ARCH_IMX21=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
+
+#
+# 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_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=""
+# 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 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 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=m
+# CONFIG_BT_L2CAP is not set
+# CONFIG_BT_SCO 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=m
+CONFIG_IEEE80211=y
+CONFIG_IEEE80211_DEBUG=y
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+# CONFIG_IEEE80211_CRYPT_TKIP 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=y
+
+#
+# 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=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI 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_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 is not set
+CONFIG_MTD_NAND_MX21ADS=y
+CONFIG_MTD_NAND_IDS=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=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_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=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
+
+#
+# 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 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_CIRRUS 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_ATMEL is not set
+# CONFIG_HOSTAP 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=320
+CONFIG_INPUT_TSDEV_SCREEN_Y=240
+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=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 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_IMX=y
+CONFIG_SERIAL_IMX_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_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
+CONFIG_IMX_SPI=y
+# CONFIG_IMX_SPIDEV 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_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+# CONFIG_I2C_IMX 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
+
+#
+# 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_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
+#
+
+#
+# Multimedia Capabilities Port drivers
+#
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_USB=m
+# 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_IMX=y
+# CONFIG_FB_S1D13XXX 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=m
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+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=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 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_LOGO_TURBOCHEF_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
+
+#
+# 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=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_IMX21_WM8731 is not set
+
+#
+# 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 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_SL811_HCD is not set
+CONFIG_USB_IMX21_HCD=y
+
+#
+# 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_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_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=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_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
+# CONFIG_USB_VICAM is not set
+CONFIG_USB_DSBR=m
+# CONFIG_USB_ET61X251 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_PWC is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=m
+# 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 is not set
+# 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 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 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=y
+CONFIG_INOTIFY=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=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=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=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=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 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 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=y
+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=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=y
+# 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_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=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_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 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
diff --git a/packages/linux/chumby-kernel_2.6.16-chumby-1.2.bb b/packages/linux/chumby-kernel_2.6.16-chumby-1.2.bb
new file mode 100644
index 0000000000..d85f001c78
--- /dev/null
+++ b/packages/linux/chumby-kernel_2.6.16-chumby-1.2.bb
@@ -0,0 +1,37 @@
+require linux.inc
+
+SECTION = "kernel"
+DESCRIPTION = "Linux kernel for the Chumby"
+LICENSE = "GPL"
+PR = "r2"
+
+SRC_URI = "http://files.chumby.com/source/ironforge/build396/linux-2.6.16-chumby-1.2.tar.gz \
+ http://files.chumby.com/source/ironforge/build396/align.pl \
+ file://defconfig \
+ "
+
+S = "${WORKDIR}/linux-2.6.16"
+
+COMPATIBLE_HOST = 'arm.*-linux'
+
+ARCH = "arm"
+
+#CMDLINE_CONSOLE ?= "ttyS0,115200n8"
+#CMDLINE_ROOT = "root=/dev/slug rootfstype=ext2,jffs2 initrd=0x01000000,10M mem=32M@0x00000000"
+#CMDLINE_ROOT = "root=/dev/ram0 rw rootfstype=ext2,jffs2 initrd=0x01000000,10M init=/linuxrc mem=32M@0x00000000"
+#CMDLINE_ROOT = "root=/dev/mtdblock2 rootfstype=jffs2 console=ttyS0,115200 mem=64M"
+#CMDLINE = "${CMDLINE_ROOT} ${CMDLINE_CONSOLE}"
+#CMDLINE = "console=ttyS0,38400 root=/dev/mtdblock5 rootfstype=cramfs psplash=false"
+
+COMPATIBLE_MACHINE = "chumby"
+
+do_deploy_prepend() {
+ perl ../align.pl arch/arm/boot/zImage
+}
+
+do_deploy_append() {
+ rm -f ${DEPLOY_DIR_IMAGE}/zImage-${PV}-${PR}-${MACHINE}.bin.zip
+ zip ${DEPLOY_DIR_IMAGE}/zImage-${PV}-${PR}-${MACHINE}.bin.zip ${DEPLOY_DIR_IMAGE}/zImage-${PV}-${PR}-${MACHINE}.bin
+ ln -sf zImage-${PV}-${PR}-${MACHINE}.bin.zip ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin.zip
+}
+
diff --git a/packages/linux/linux-2.6.22.6/mx31moboard/.mtn2git_empty b/packages/linux/linux-2.6.22.6/mx31moboard/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/mx31moboard/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.22.6/mx31moboard/defconfig b/packages/linux/linux-2.6.22.6/mx31moboard/defconfig
new file mode 100644
index 0000000000..23c55e35b8
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/mx31moboard/defconfig
@@ -0,0 +1,1492 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.22.6
+# Mon Dec 17 11:53:39 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+# CONFIG_GENERIC_GPIO is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_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_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_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+
+#
+# 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=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_MXC=y
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Freescale MXC Implementations
+#
+CONFIG_ARCH_MX3=y
+# CONFIG_ARCH_MX27 is not set
+# CONFIG_ARCH_MXC_HAS_NFC_V1 is not set
+CONFIG_I2C_MXC_SELECT1=y
+CONFIG_I2C_MXC_SELECT2=y
+
+#
+# MX3 Options
+#
+# CONFIG_MACH_MX31ADS is not set
+CONFIG_MACH_MX31MOBOTS=y
+CONFIG_MX3_DOZE_DURING_IDLE=y
+CONFIG_MXC_SDMA_API=y
+# CONFIG_ARCH_MXC_HAS_NFC_V2 is not set
+
+#
+# Device options
+#
+# CONFIG_I2C_MXC_SELECT3 is not set
+CONFIG_ARCH_HAS_EVTMON=y
+CONFIG_ISP1504_MXC=y
+CONFIG_ISP1504_MXC_OTG=m
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+# CONFIG_CPU_ARM926T is not set
+CONFIG_CPU_V6=y
+# CONFIG_CPU_32v6K is not set
+CONFIG_CPU_32v6=y
+CONFIG_CPU_ABRT_EV6=y
+CONFIG_CPU_CACHE_V6=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V6=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_OUTER_CACHE=y
+CONFIG_CACHE_L2X0=y
+
+#
+# Bus support
+#
+CONFIG_ISA=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_TICK_ONESHOT is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT=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=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="noinitrd console=ttymxc0 root=/dev/mtdblock2 rw ip=off"
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
+CONFIG_VFP=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_EMULATION is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+# CONFIG_IEEE80211_CRYPT_WEP is not set
+# CONFIG_IEEE80211_CRYPT_CCMP is not set
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+# CONFIG_IEEE80211_SOFTMAC is not set
+# CONFIG_RFKILL 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=y
+CONFIG_PROC_EVENTS=y
+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 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_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 is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# 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_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_PLATRAM is not set
+CONFIG_MTD_MXC=y
+
+#
+# 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
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_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_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=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=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS 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
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ARCNET is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=m
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+# CONFIG_WLAN_80211 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+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_DM9601 is not set
+# 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_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
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=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_MXC is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_TOUCHSCREEN_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_MXC=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_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_MXC=y
+CONFIG_SERIAL_MXC_CONSOLE=y
+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
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_MXC_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
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ELEKTOR is not set
+CONFIG_I2C_MXC=y
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_TINY_USB 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=y
+CONFIG_SPI_MXC=y
+# CONFIG_SPI_MXC_TEST_LOOPBACK is not set
+# CONFIG_SPI_MXC_SELECT1 is not set
+CONFIG_SPI_MXC_SELECT2=y
+CONFIG_SPI_MXC_SELECT3=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_SPIDEV is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+# CONFIG_HWMON 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=y
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_PMS is not set
+CONFIG_VIDEO_MXC_CAMERA=y
+
+#
+# MXC Camera/V4L2 PRP Features support
+#
+CONFIG_VIDEO_MXC_IPU_CAMERA=y
+CONFIG_MXC_CAMERA_MICRON111=y
+# CONFIG_MXC_CAMERA_MC521DA is not set
+# CONFIG_MXC_CAMERA_OV2640 is not set
+CONFIG_MXC_IPU_PRP_VF_SDC=y
+CONFIG_MXC_IPU_PRP_ENC=y
+CONFIG_VIDEO_MXC_OUTPUT=y
+CONFIG_VIDEO_MXC_IPU_OUTPUT=y
+# CONFIG_VIDEO_MXC_OPL 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_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_ZR364XX is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_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
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_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_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_SYS_FOPS is not set
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+CONFIG_FB_MXC=y
+CONFIG_FB_MXC_SYNC_PANEL=y
+CONFIG_FB_MXC_TVOUT=y
+# CONFIG_FB_MXC_ASYNC_PANEL 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
+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_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
+#
+CONFIG_SND_MXC_PMIC=y
+# CONFIG_SND_MXC_PLAYBACK_MIXING is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_CAIAQ is not set
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+# CONFIG_USB_ARCH_HAS_OHCI is not set
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+CONFIG_USB_OTG_WHITELIST=y
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_ARC=y
+CONFIG_USB_EHCI_ARC_H1=y
+CONFIG_USB_EHCI_ARC_H2=y
+CONFIG_USB_EHCI_ARC_OTG=y
+# CONFIG_USB_EHCI_FSL_MC13783 is not set
+# CONFIG_USB_EHCI_FSL_1301 is not set
+CONFIG_USB_EHCI_FSL_1504=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# 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_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 Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL 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=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_ARC=y
+CONFIG_USB_ARC=m
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_ARC_OTG=y
+# CONFIG_USB_GADGET_FSL_MC13783 is not set
+# CONFIG_USB_GADGET_FSL_1301 is not set
+CONFIG_USB_GADGET_FSL_1504=y
+# 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 is not set
+CONFIG_USB_G_SERIAL=m
+# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+CONFIG_MMC_MXC=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
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_MXC=y
+
+#
+# MXC support drivers
+#
+
+#
+# MXC IPU
+#
+CONFIG_MXC_IPU=y
+CONFIG_MXC_IPU_PF=y
+
+#
+# MXC SSI support
+#
+CONFIG_MXC_SSI=y
+
+#
+# MXC Digital Audio Multiplexer support
+#
+CONFIG_MXC_DAM=y
+
+#
+# MXC PMIC support
+#
+CONFIG_MXC_SPI_PMIC_CORE=y
+CONFIG_MXC_PMIC=y
+CONFIG_MXC_PMIC_CHARDEV=y
+
+#
+# MXC PMIC Client Drivers
+#
+CONFIG_MXC_PMIC_MC13783=y
+CONFIG_MXC_MC13783_ADC=y
+CONFIG_MXC_MC13783_AUDIO=y
+CONFIG_MXC_MC13783_RTC=y
+CONFIG_MXC_MC13783_LIGHT=y
+CONFIG_MXC_MC13783_BATTERY=y
+CONFIG_MXC_MC13783_CONNECTIVITY=y
+CONFIG_MXC_MC13783_POWER=y
+
+#
+# Advanced Power Management devices
+#
+# CONFIG_MXC_DPTC is not set
+CONFIG_MXC_DVFS=y
+CONFIG_MXC_DVFS_SDMA=y
+
+#
+# MXC Security Drivers
+#
+CONFIG_MXC_SECURITY_SCC=y
+# CONFIG_SCC_DEBUG is not set
+CONFIG_MXC_SECURITY_RNG=y
+# CONFIG_MXC_RNG_TEST_DRIVER is not set
+# CONFIG_MXC_RNG_DEBUG is not set
+CONFIG_MXC_SECURITY_RTIC=y
+# CONFIG_MXC_RTIC_TEST_DEBUG is not set
+CONFIG_MXC_SECURITY_CORE=y
+
+#
+# MXC MPEG4 Encoder Kernel module support
+#
+CONFIG_MXC_HMP4E=y
+# CONFIG_MXC_HMP4E_DEBUG is not set
+
+#
+# MXC VPU(Video Processing Unit) support
+#
+# CONFIG_MXC_VPU 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=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_YAFFS_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_CRAMFS_LINEAR is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_SUNRPC_BIND34 is not set
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# 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=m
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+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_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_DEBUG_USER=y
+
+#
+# CodeTEST setup
+#
+# CONFIG_CODETEST 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_CRC_ITU_T 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
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-2.6.23/kallsyms-missing-include.patch b/packages/linux/linux-2.6.23/kallsyms-missing-include.patch
new file mode 100644
index 0000000000..9c31b1fa9a
--- /dev/null
+++ b/packages/linux/linux-2.6.23/kallsyms-missing-include.patch
@@ -0,0 +1,19 @@
+A missing include in kallsyms.h.
+
+Upstream this is fixed in the 2.6.24 rc series:
+
+http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a75983eef1193c43caebde6643a218bd8d8390e
+
+Leon Woestenberg <leon.woestenberg@gmail.com>
+
+--- a/include/linux/kallsyms.h
++++ b/include/linux/kallsyms.h
+@@ -6,6 +6,7 @@
+ #define _LINUX_KALLSYMS_H
+
+ #include <linux/errno.h>
++#include <linux/stddef.h>
+
+ #define KSYM_NAME_LEN 128
+ #define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \
+
diff --git a/packages/linux/linux-ixp4xx/defconfig-2.6.23.12 b/packages/linux/linux-ixp4xx/defconfig-2.6.23.14
index efbd55195d..efbd55195d 100644
--- a/packages/linux/linux-ixp4xx/defconfig-2.6.23.12
+++ b/packages/linux/linux-ixp4xx/defconfig-2.6.23.14
diff --git a/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.23.14 b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.23.14
new file mode 100644
index 0000000000..cdd7ecdf0e
--- /dev/null
+++ b/packages/linux/linux-ixp4xx/nslu2/defconfig-2.6.23.14
@@ -0,0 +1,1940 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.23.8
+# Wed Nov 21 22:15:10 2007
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_VM_EVENT_COUNTERS is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_AS is not set
+CONFIG_IOSCHED_DEADLINE=y
+# CONFIG_IOSCHED_CFQ is not set
+# CONFIG_DEFAULT_AS is not set
+CONFIG_DEFAULT_DEADLINE=y
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="deadline"
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+CONFIG_ARCH_IXP4XX=y
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
+
+#
+# Intel IXP4xx Implementation Options
+#
+
+#
+# IXP4xx Platforms
+#
+CONFIG_MACH_NSLU2=y
+CONFIG_MACH_AVILA=y
+CONFIG_MACH_LOFT=y
+# CONFIG_ARCH_ADI_COYOTE is not set
+# CONFIG_MACH_GATEWAY7001 is not set
+# CONFIG_MACH_WG302V2 is not set
+CONFIG_ARCH_IXDP425=y
+CONFIG_MACH_IXDPG425=y
+# CONFIG_MACH_IXDP465 is not set
+# CONFIG_MACH_KIXRP435 is not set
+CONFIG_ARCH_IXCDP1100=y
+# CONFIG_ARCH_PRPMC1100 is not set
+CONFIG_MACH_NAS100D=y
+CONFIG_MACH_DSMG600=y
+CONFIG_ARCH_IXDP4XX=y
+CONFIG_MACH_FSG=y
+# CONFIG_MACH_GTWX5715 is not set
+
+#
+# IXP4xx Options
+#
+CONFIG_DMABOUNCE=y
+# CONFIG_IXP4XX_INDIRECT_PCI is not set
+CONFIG_IXP4XX_QMGR=y
+CONFIG_IXP4XX_NPE=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_XSCALE=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
+# CONFIG_IWMMXT is not set
+CONFIG_XSCALE_PMU=y
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" noirqdebug console=ttyS0,115200n8"
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_SUSPEND_UP_POSSIBLE=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_DIAG=m
+CONFIG_INET_TCP_DIAG=m
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+# CONFIG_NF_CT_PROTO_UDPLITE is not set
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+# CONFIG_NETFILTER_XT_MATCH_U32 is not set
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+# CONFIG_IP6_NF_QUEUE is not set
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_BRIDGE_EBT_ULOG=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+CONFIG_TIPC=m
+# CONFIG_TIPC_ADVANCED is not set
+# CONFIG_TIPC_DEBUG is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+# CONFIG_LLC2 is not set
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=m
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+# CONFIG_CFG80211 is not set
+CONFIG_WIRELESS_EXT=y
+# CONFIG_MAC80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+CONFIG_IEEE80211_CRYPT_TKIP=m
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_RFKILL=m
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_REDBOOT_PARTS=y
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+# CONFIG_MTD_CFI_NOSWAP is not set
+CONFIG_MTD_CFI_BE_BYTE_SWAP=y
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+CONFIG_MTD_IXP4XX=y
+# CONFIG_MTD_PCI is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_NBD=m
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=10240
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+CONFIG_ATA_OVER_ETH=m
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=m
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=m
+# CONFIG_SCSI_SAS_LIBSAS is not set
+CONFIG_SCSI_LOWLEVEL=y
+CONFIG_ISCSI_TCP=m
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+CONFIG_ATA=m
+# CONFIG_ATA_NONSTANDARD is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+CONFIG_SATA_VIA=m
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+CONFIG_PATA_ARTOP=m
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_PLATFORM is not set
+CONFIG_PATA_IXP4XX_CF=m
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=m
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID10=m
+CONFIG_MD_RAID456=m
+CONFIG_MD_RAID5_RESHAPE=y
+CONFIG_MD_MULTIPATH=m
+CONFIG_MD_FAULTY=m
+CONFIG_BLK_DEV_DM=m
+# CONFIG_DM_DEBUG is not set
+CONFIG_DM_CRYPT=m
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_MIRROR is not set
+# CONFIG_DM_ZERO is not set
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_TUN=m
+# CONFIG_ARCNET is not set
+# CONFIG_PHYLIB is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_IXP4XX_ETH=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+CONFIG_VIA_VELOCITY=m
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+# CONFIG_PRISM54 is not set
+CONFIG_USB_ZD1201=m
+# CONFIG_HOSTAP is not set
+# CONFIG_BCM43XX is not set
+CONFIG_ZD1211RW=m
+# CONFIG_ZD1211RW_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET_MII=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_PPP=m
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+# CONFIG_PPPOL2TP is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_ISDN=m
+# CONFIG_ISDN_I4L is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
+CONFIG_ISDN_CAPI_CAPI20=m
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_IXP4XX_BEEPER=y
+CONFIG_INPUT_ATI_REMOTE=m
+CONFIG_INPUT_ATI_REMOTE2=m
+CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_POWERMATE is not set
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_UINPUT=m
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_COMPUTONE is not set
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_DIGIEPCA is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_MOXA_SMARTIO_NEW is not set
+# CONFIG_ISI is not set
+# CONFIG_SYNCLINKMP is not set
+# CONFIG_SYNCLINK_GT is not set
+CONFIG_N_HDLC=m
+# CONFIG_RISCOM8 is not set
+# CONFIG_SPECIALIX is not set
+# CONFIG_SX is not set
+# CONFIG_RIO is not set
+# CONFIG_STALDRV is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=m
+CONFIG_SERIAL_8250_NR_UARTS=2
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_IXP4XX_WATCHDOG=m
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_IXP4XX=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_IOP3XX is not set
+# CONFIG_I2C_IXP4XX is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_STUB is not set
+CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
+CONFIG_SENSORS_EEPROM=y
+CONFIG_SENSORS_PCF8574=m
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+CONFIG_W1=m
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_MATROX is not set
+CONFIG_W1_MASTER_DS2490=m
+CONFIG_W1_MASTER_DS2482=m
+# CONFIG_W1_MASTER_DS1WM is not set
+
+#
+# 1-wire Slaves
+#
+CONFIG_W1_SLAVE_THERM=m
+CONFIG_W1_SLAVE_SMEM=m
+CONFIG_W1_SLAVE_DS2433=m
+CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2760 is not set
+CONFIG_HWMON=m
+CONFIG_HWMON_VID=m
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+CONFIG_SENSORS_AD7418=m
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_FSCPOS is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+CONFIG_SENSORS_W83781D=m
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_IXP4XX=y
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU_ACTIVITY=y
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+# CONFIG_VIDEO_V4L1 is not set
+# CONFIG_VIDEO_V4L1_COMPAT is not set
+CONFIG_VIDEO_V4L2=y
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_VIVI=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_VIDEO_SAA7134=m
+# CONFIG_VIDEO_SAA7134_ALSA is not set
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+CONFIG_VIDEO_CX88_ALSA=m
+# CONFIG_VIDEO_CX88_BLACKBIRD is not set
+# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_V4L_USB_DRIVERS=y
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_RADIO_ADAPTERS is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR_I2C=m
+CONFIG_VIDEO_IR=m
+CONFIG_VIDEO_TVEEPROM=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_FB is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# PCI devices
+#
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDA_INTEL is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+
+#
+# System on Chip audio support
+#
+# CONFIG_SND_SOC is not set
+
+#
+# SoC Audio support for SuperH
+#
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+CONFIG_USB_KBD=m
+CONFIG_USB_MOUSE=m
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=m
+# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
+# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_UHCI_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_DPCM is not set
+CONFIG_USB_STORAGE_USBAT=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+CONFIG_USB_STORAGE_ALAUDA=y
+CONFIG_USB_STORAGE_ONETOUCH=y
+CONFIG_USB_STORAGE_KARMA=y
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_OTI6858 is not set
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+CONFIG_USB_ADUTUX=m
+# CONFIG_USB_AUERSWALD is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_BERRY_CHARGE=m
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+CONFIG_USB_CYTHERM=m
+CONFIG_USB_PHIDGET=m
+CONFIG_USB_PHIDGETKIT=m
+CONFIG_USB_PHIDGETMOTORCONTROL=m
+CONFIG_USB_PHIDGETSERVO=m
+CONFIG_USB_IDMOUSE=m
+CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_APPLEDISPLAY is not set
+CONFIG_USB_SISUSBVGA=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+# CONFIG_MMC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1672=y
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+CONFIG_RTC_DRV_ISL1208=y
+CONFIG_RTC_DRV_X1205=y
+CONFIG_RTC_DRV_PCF8563=y
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+
+#
+# SPI RTC drivers
+#
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC_BIND34=y
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+CONFIG_CIFS_XATTR=y
+CONFIG_CIFS_POSIX=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_USER is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+# CONFIG_CRYPTO_TEST is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=y
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/linux-ixp4xx_2.6.23.12.bb b/packages/linux/linux-ixp4xx_2.6.23.14.bb
index 14b79ae7cb..b7c7682370 100644
--- a/packages/linux/linux-ixp4xx_2.6.23.12.bb
+++ b/packages/linux/linux-ixp4xx_2.6.23.14.bb
@@ -1,12 +1,8 @@
-# The new ethernet driver included in the 2.6.23 version of the nslu2-linux.org kernel patches
-# has problems with providing the correct MAC address on the initial DHCP request.
-DEFAULT_PREFERENCE = "-1"
-
require linux.inc
require linux-ixp4xx.inc
VANILLA_VERSION = "2.6.23"
-KERNEL_RELEASE = "2.6.23.12"
+KERNEL_RELEASE = "2.6.23.14"
# If you use a rc, you will need to use this:
#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
diff --git a/packages/linux/linux-openmoko-devel_2.6.23+2.6.24-rc7.bb b/packages/linux/linux-openmoko-devel_2.6.23+2.6.24-rc7.bb
new file mode 100644
index 0000000000..4543979eb3
--- /dev/null
+++ b/packages/linux/linux-openmoko-devel_2.6.23+2.6.24-rc7.bb
@@ -0,0 +1,59 @@
+require linux.inc
+require linux-openmoko.inc
+
+DESCRIPTION = "Linux 2.6.x (development) kernel for FIC SmartPhones shipping w/ OpenMoko"
+VANILLA_VERSION = "2.6.23"
+KERNEL_RELEASE = "2.6.24-rc7"
+
+KERNEL_VERSION = "${KERNEL_RELEASE}"
+
+# If you use a rc, you will need to use this:
+PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}+svnr${SRCREV}"
+PR = "r0"
+
+KERNEL_IMAGETYPE = "uImage"
+UBOOT_ENTRYPOINT = "30008000"
+
+##############################################################
+# source and patches
+#
+SRCREV_FORMAT = "patches-rconfig"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=v2.6.24-rc7 \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.24.x;module=patches;proto=http;name=patches \
+ svn://svn.openmoko.org/branches/src/target/kernel/2.6.24.x;module=config;proto=http;name=config "
+
+S = "${WORKDIR}/git"
+
+##############################################################
+# kernel image resides on a seperate flash partition (for now)
+#
+FILES_kernel-image = ""
+ALLOW_EMPTY = "1"
+
+COMPATIBLE_HOST = "arm.*-linux"
+COMPATIBLE_MACHINE = 'fic-gta01|fic-gta02'
+
+CMDLINE = "unused -- bootloader passes ATAG list"
+
+###############################################################
+# module configs specific to this kernel
+#
+
+# usb
+module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_hci_usb = "hci_usb"
+module_autoload_g_ether = "g_ether"
+# audio
+module_autoload_snd-soc-neo1973-wm8753 = "snd-soc-neo1973-wm8753"
+# sd/mmc
+module_autoload_s3cmci = "s3cmci"
+
+do_prepatch() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.openmoko
+ mv .pc .pc.old
+ mv ${WORKDIR}/config/defconfig-${KERNEL_VERSION} ${WORKDIR}/defconfig
+}
+
+addtask prepatch after do_unpack before do_patch
diff --git a/packages/linux/linux-openmoko.inc b/packages/linux/linux-openmoko.inc
index b659153733..4f1981c8b3 100644
--- a/packages/linux/linux-openmoko.inc
+++ b/packages/linux/linux-openmoko.inc
@@ -12,11 +12,22 @@ pkg_postinst_kernel-image () {
if test "x$D" != "x"; then
exit 1
else
- echo "Upgrading Kernel in Flash"
- echo "DO NOT stop this process"
+ if [ -f ${sysconfdir}/default/flashkernel ] ; then
+ echo "Upgrading Kernel in Flash"
+ echo "DO NOT stop this process"
- ${bindir}/flash_eraseall ${MTD_KERNEL_PARTITION}
- ${bindir}/nandwrite -p ${MTD_KERNEL_PARTITION} /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+ MTD_KERNEL_PARTITION=`cat /proc/mtd | grep kernel | cut -d':' -f1`
+ MTD_KERNEL_PARTITION=/dev/$MTD_KERNEL_PARTITION
+
+ if [ "x$MTD_KERNEL_PARTITION" = "x" ] ; then
+ exit 1
+ fi
+
+ ${bindir}/flash_eraseall $MTD_KERNEL_PARTITION
+ ${bindir}/nandwrite -p $MTD_KERNEL_PARTITION /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
+ else
+ touch ${sysconfdir}/default/flashkernel
+ fi
fi
}
diff --git a/packages/linux/linux-openmoko/gta02-sound.patch b/packages/linux/linux-openmoko/gta02-sound.patch
index 66fc850350..f742c77303 100644
--- a/packages/linux/linux-openmoko/gta02-sound.patch
+++ b/packages/linux/linux-openmoko/gta02-sound.patch
@@ -280,7 +280,7 @@ Index: linux-2.6.22/sound/soc/s3c24xx/neo1973_gta02_wm8753.c
+static int lm4853_get_spk(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
-+ ucontrol->value.integer.value[0] = (lm4853_state & LM4853_AMP) >> 1;
++ ucontrol->value.integer.value[0] = (lm4853_state & LM4853_SPK) >> 1;
+
+ return 0;
+}
diff --git a/packages/linux/linux-openmoko_2.6.22.5.bb b/packages/linux/linux-openmoko_2.6.22.5.bb
index d1b3c5ef1e..fe46c59a58 100644
--- a/packages/linux/linux-openmoko_2.6.22.5.bb
+++ b/packages/linux/linux-openmoko_2.6.22.5.bb
@@ -9,7 +9,7 @@ KERNEL_RELEASE = "2.6.22.5"
#PV = "${VANILLA_VERSION}+${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
PV = "${KERNEL_RELEASE}-moko11+svnr${SRCREV}"
-PR = "r10"
+PR = "r13"
KERNEL_IMAGETYPE = "uImage"
UBOOT_ENTRYPOINT = "30008000"
@@ -29,7 +29,6 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.ta
file://iis-suspend.patch;patch=1 \
file://s3c24xx-pcm-suspend.patch;patch=1 \
file://gta-vibro-pwm-suspend.patch;patch=1 \
- file://glamo-report-vram-size-to-userspace.patch;patch=1 \
file://defconfig-${KERNEL_RELEASE}"
S = "${WORKDIR}/linux-${VANILLA_VERSION}"
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/.mtn2git_empty b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/.mtn2git_empty
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/arm_pxa_20070923.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/arm_pxa_20070923.patch
index ad4ce996df..ad4ce996df 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/arm_pxa_20070923.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/arm_pxa_20070923.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/binutils-buildid-arm.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/binutils-buildid-arm.patch
index 68e35e89e1..68e35e89e1 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/binutils-buildid-arm.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/binutils-buildid-arm.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/connectplus-remove-ide-HACK.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/connectplus-remove-ide-HACK.patch
index 4414b21191..4414b21191 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/connectplus-remove-ide-HACK.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/connectplus-remove-ide-HACK.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-akita b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-akita
index 59ec5c95b7..a299351698 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-akita
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-akita
@@ -40,7 +40,7 @@ CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
@@ -677,8 +677,24 @@ CONFIG_MII=m
#
# Wireless LAN
#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_WLAN_PRE80211=y
+# CONFIG_STRIP is not set
+# CONFIG_PCMCIA_WAVELAN is not set
+# CONFIG_PCMCIA_NETWAVE is not set
+CONFIG_WLAN_80211=y
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_LIBERTAS is not set
+CONFIG_HERMES=m
+# CONFIG_ATMEL is not set
+CONFIG_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_AIRO_CS=m
+# 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
#
# USB Network Adapters
@@ -989,7 +1005,7 @@ CONFIG_FB_DEFERRED_IO=y
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_OVERLAY=y
# CONFIG_FB_PXA_PARAMETERS is not set
# CONFIG_FB_MBX is not set
# CONFIG_FB_W100 is not set
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-bootcdx86
index 833f72ac9e..833f72ac9e 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-bootcdx86
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-bootcdx86
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-c7x0 b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-c7x0
index bd11500398..71e175c717 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-c7x0
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-c7x0
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23
-# Tue Oct 16 12:02:32 2007
+# Linux kernel version: 2.6.24-rc6
+# Mon Dec 31 17:45:51 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -40,12 +40,17 @@ CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_CGROUPS is not set
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_FAIR_USER_SCHED=y
+# CONFIG_FAIR_CGROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not set
@@ -138,7 +143,7 @@ CONFIG_ARCH_PXA=y
# CONFIG_ARCH_OMAP is not set
#
-# Intel PXA2xx Implementations
+# Intel PXA2xx/PXA3xx Implementations
#
# CONFIG_ARCH_LUBBOCK is not set
# CONFIG_MACH_LOGICPD_PXA270 is not set
@@ -147,10 +152,11 @@ CONFIG_ARCH_PXA=y
CONFIG_PXA_SHARPSL=y
# CONFIG_MACH_TRIZEPS4 is not set
# CONFIG_MACH_EM_X270 is not set
-# CONFIG_MACH_HX2750 is not set
-# CONFIG_MACH_HTCUNIVERSAL is not set
+# CONFIG_MACH_ZYLONITE is not set
+# CONFIG_MACH_ARMCORE is not set
CONFIG_PXA_SHARPSL_25x=y
# CONFIG_PXA_SHARPSL_27x is not set
+# CONFIG_MACH_HX2750 is not set
# CONFIG_MACH_POODLE is not set
CONFIG_MACH_CORGI=y
CONFIG_MACH_SHEPHERD=y
@@ -198,10 +204,6 @@ CONFIG_SHARP_SCOOP=y
#
# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
CONFIG_PCCARD=m
# CONFIG_PCMCIA_DEBUG is not set
CONFIG_PCMCIA=m
@@ -219,6 +221,7 @@ CONFIG_PCMCIA_PXA2XX=m
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_PREEMPT=y
CONFIG_HZ=100
CONFIG_AEABI=y
@@ -231,6 +234,7 @@ CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
+# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
@@ -246,6 +250,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 dyntick=enable quiet"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
CONFIG_CPU_FREQ_PXA25x=y
#
@@ -254,15 +259,17 @@ CONFIG_CPU_FREQ_PXA25x=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
-CONFIG_CPU_FREQ_STAT=y
+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_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE 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_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=m
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
#
# Floating point emulation
@@ -326,6 +333,7 @@ CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
# CONFIG_TCP_CONG_ADVANCED is not set
@@ -388,10 +396,6 @@ CONFIG_IP_NF_QUEUE=m
# 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
#
@@ -429,6 +433,8 @@ CONFIG_IRCOMM=m
# Dongle support
#
# CONFIG_KINGSUN_DONGLE is not set
+# CONFIG_KSDAZZLE_DONGLE is not set
+# CONFIG_KS959_DONGLE is not set
#
# Old SIR device drivers
@@ -461,9 +467,11 @@ CONFIG_BT_HIDP=m
#
CONFIG_BT_HCIUSB=m
# CONFIG_BT_HCIUSB_SCO is not set
+# CONFIG_BT_HCIBTSDIO is not set
CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_HCIUART_BCSP=y
+# CONFIG_BT_HCIUART_LL is not set
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
@@ -496,6 +504,7 @@ CONFIG_IEEE80211_CRYPT_TKIP=m
#
# Generic Driver Options
#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
@@ -522,6 +531,7 @@ CONFIG_MTD_BLOCK=y
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
@@ -574,6 +584,7 @@ CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_SHARPSL=y
# CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
# CONFIG_MTD_ONENAND is not set
#
@@ -590,15 +601,17 @@ CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
-CONFIG_IDE=y
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+CONFIG_IDE=m
CONFIG_IDE_MAX_HWIFS=4
-CONFIG_BLK_DEV_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=y
+CONFIG_BLK_DEV_IDEDISK=m
# CONFIG_IDEDISK_MULTI_MODE is not set
CONFIG_BLK_DEV_IDECS=m
# CONFIG_BLK_DEV_IDECD is not set
@@ -611,10 +624,11 @@ CONFIG_IDE_PROC_FS=y
#
# IDE chipset support/bugfixes
#
-CONFIG_IDE_GENERIC=y
-# CONFIG_IDEPCI_PCIBUS_ORDER is not set
+CONFIG_IDE_GENERIC=m
+# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_IDE_ARM is not set
# CONFIG_BLK_DEV_IDEDMA is not set
+CONFIG_IDE_ARCH_OBSOLETE_INIT=y
# CONFIG_BLK_DEV_HD is not set
#
@@ -654,6 +668,7 @@ CONFIG_SCSI_WAIT_SCAN=m
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_SCSI_DEBUG is not set
@@ -670,7 +685,9 @@ CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
# CONFIG_DM_MULTIPATH_RDAC is not set
+# CONFIG_DM_MULTIPATH_HP is not set
# CONFIG_DM_DELAY is not set
+# CONFIG_DM_UEVENT is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
@@ -678,6 +695,7 @@ CONFIG_NETDEVICES=y
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
+# CONFIG_VETH is not set
# CONFIG_PHYLIB is not set
CONFIG_NET_ETHERNET=y
CONFIG_MII=m
@@ -685,6 +703,11 @@ CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
# CONFIG_SMC911X is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_B44 is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
@@ -696,9 +719,9 @@ CONFIG_WLAN_80211=y
# CONFIG_PCMCIA_RAYCS is not set
# CONFIG_LIBERTAS is not set
CONFIG_HERMES=m
-# CONFIG_ATMEL is not set
CONFIG_PCMCIA_HERMES=m
CONFIG_PCMCIA_SPECTRUM=m
+# CONFIG_ATMEL is not set
# CONFIG_AIRO_CS is not set
# CONFIG_PCMCIA_WL3501 is not set
# CONFIG_USB_ZD1201 is not set
@@ -714,7 +737,6 @@ 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
@@ -769,7 +791,6 @@ CONFIG_INPUT_MOUSEDEV=m
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
@@ -844,7 +865,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
# CONFIG_IPMI_HANDLER is not set
-# CONFIG_WATCHDOG is not set
CONFIG_HW_RANDOM=m
# CONFIG_NVRAM is not set
# CONFIG_R3964 is not set
@@ -906,36 +926,18 @@ CONFIG_I2C_PXA=y
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-
-#
-# Multi-Function Devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
+# CONFIG_WATCHDOG is not set
#
-# LED drivers
+# Sonics Silicon Backplane
#
-CONFIG_LEDS_CORGI=y
-# CONFIG_LEDS_TOSA is not set
-# CONFIG_LEDS_GPIO is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
#
-# LED Triggers
+# Multifunction device drivers
#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+# CONFIG_MFD_SM501 is not set
#
# Multimedia devices
@@ -947,12 +949,12 @@ CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_VIVI is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
-# CONFIG_TUNER_TEA5761 is not set
CONFIG_V4L_USB_DRIVERS=y
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
@@ -981,15 +983,6 @@ CONFIG_USB_DABUSB=m
#
# Graphics support
#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CORGI=y
-
-#
-# Display device support
-#
-# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
@@ -998,6 +991,7 @@ CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
@@ -1017,6 +1011,15 @@ CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_MBX is not set
CONFIG_FB_W100=y
# CONFIG_FB_VIRTUAL is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_CORGI=y
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
#
# Console display driver support
@@ -1042,9 +1045,6 @@ CONFIG_LOGO=y
# 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
#
# Sound
@@ -1123,6 +1123,7 @@ CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
+CONFIG_HIDRAW=y
#
# USB Input Devices
@@ -1209,6 +1210,7 @@ CONFIG_USB_SERIAL_GENERIC=y
# CONFIG_USB_SERIAL_AIRPRIME is not set
# CONFIG_USB_SERIAL_ARK3116 is not set
CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
# CONFIG_USB_SERIAL_CP2101 is not set
@@ -1292,6 +1294,7 @@ CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
CONFIG_USB_GADGET_PXA2XX=y
@@ -1323,11 +1326,29 @@ CONFIG_MMC_UNSAFE_RESUME=y
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_PXA=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+CONFIG_LEDS_CORGI=y
+# CONFIG_LEDS_TOSA is not set
+# CONFIG_LEDS_GPIO is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_IDE_DISK=y
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
@@ -1347,6 +1368,7 @@ CONFIG_RTC_INTF_DEV=y
# I2C RTC drivers
#
# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
# CONFIG_RTC_DRV_RS5C372 is not set
@@ -1377,19 +1399,6 @@ CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_DRV_SA1100=y
#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
# File systems
#
CONFIG_EXT2_FS=y
@@ -1438,7 +1447,6 @@ 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
#
@@ -1454,6 +1462,7 @@ CONFIG_RAMFS=y
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
CONFIG_JFFS2_SUMMARY=y
# CONFIG_JFFS2_FS_XATTR is not set
# CONFIG_JFFS2_SYSFS is not set
@@ -1467,19 +1476,12 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
# CONFIG_JFFS2_CMODE_SIZE is not set
# CONFIG_JFFS2_CMODE_FAVOURLZO 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_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
@@ -1533,10 +1535,6 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
# CONFIG_SYSV68_PARTITION is not set
-
-#
-# Native Language Support
-#
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="cp437"
CONFIG_NLS_CODEPAGE_437=y
@@ -1577,22 +1575,17 @@ CONFIG_NLS_ISO8859_15=m
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_INSTRUMENTATION=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
+# CONFIG_MARKERS is not set
#
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
+# CONFIG_ENABLE_WARN_DEPRECATED is not set
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
@@ -1620,10 +1613,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
CONFIG_FRAME_POINTER=y
# CONFIG_FORCED_INLINING is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION is not set
+# CONFIG_SAMPLES is not set
# CONFIG_DEBUG_USER is not set
CONFIG_DEBUG_ERRORS=y
# CONFIG_DEBUG_LL is not set
@@ -1633,6 +1629,7 @@ CONFIG_DEBUG_ERRORS=y
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=m
@@ -1653,6 +1650,7 @@ CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_XTS is not set
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
@@ -1667,12 +1665,14 @@ CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
+# CONFIG_CRYPTO_SEED is not set
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_LZO is not set
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_TEST=m
+# CONFIG_CRYPTO_AUTHENC is not set
CONFIG_CRYPTO_HW=y
#
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-collie
index 0b6cdf35bf..9b3cb6ae34 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-collie
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-collie
@@ -1,18 +1,12 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.23-git9
-# Fri Jan 4 01:43:53 2008
+# Linux kernel version: 2.6.20.4
+# Fri Apr 6 23:20:59 2007
#
CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_HARDIRQS=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_PROBE=y
@@ -21,36 +15,36 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
# 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"
#
-# General setup
+# 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_SYSVIPC_SYSCTL=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_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
-# CONFIG_USER_NS is not set
+# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_FAIR_USER_SCHED=y
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
@@ -65,29 +59,32 @@ CONFIG_BUG=y
# CONFIG_ELF_CORE is not set
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
-CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
-CONFIG_SIGNALFD=y
-CONFIG_EVENTFD=y
CONFIG_SHMEM=y
-CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
-# CONFIG_SLUB is not set
-# CONFIG_SLOB is not set
+CONFIG_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
-# CONFIG_BLK_DEV_BSG is not set
#
# IO Schedulers
@@ -119,16 +116,13 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IMX is not set
-# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_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_KS8695 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -136,7 +130,6 @@ CONFIG_ARCH_SA1100=y
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP is not set
#
@@ -158,14 +151,6 @@ CONFIG_SA1100_COLLIE=y
# CONFIG_SA1100_SSP is not set
#
-# Boot options
-#
-
-#
-# Power management
-#
-
-#
# Processor Type
#
CONFIG_CPU_32=y
@@ -183,25 +168,21 @@ CONFIG_CPU_CP15_MMU=y
#
# CONFIG_CPU_ICACHE_DISABLE is not set
# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
CONFIG_SHARP_LOCOMO=y
CONFIG_SHARP_PARAM=y
-CONFIG_SHARPSL_PM=y
CONFIG_SHARP_SCOOP=y
#
# Bus support
#
CONFIG_ISA=y
-# CONFIG_PCI_SYSCALL is not set
-# CONFIG_ARCH_SUPPORTS_MSI is not set
#
# PCCARD (PCMCIA/CardBus) support
#
-CONFIG_PCCARD=m
+CONFIG_PCCARD=y
# CONFIG_PCMCIA_DEBUG is not set
-CONFIG_PCMCIA=m
+CONFIG_PCMCIA=y
CONFIG_PCMCIA_LOAD_CIS=y
CONFIG_PCMCIA_IOCTL=y
@@ -210,12 +191,11 @@ CONFIG_PCMCIA_IOCTL=y
#
# CONFIG_I82365 is not set
# CONFIG_TCIC is not set
-CONFIG_PCMCIA_SA1100=m
+CONFIG_PCMCIA_SA1100=y
#
# Kernel Features
#
-# CONFIG_TICK_ONESHOT is not set
CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
@@ -232,9 +212,6 @@ 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_BOUNCE=y
-CONFIG_VIRT_TO_BUS=y
# CONFIG_LEDS is not set
CONFIG_ALIGNMENT_TRAP=y
@@ -243,7 +220,6 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttySA0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=64M fbcon=rotate:1 dyntick=enable debug"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
@@ -277,10 +253,8 @@ CONFIG_BINFMT_MISC=m
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_SUSPEND_UP_POSSIBLE=y
-CONFIG_SUSPEND=y
-CONFIG_APM_EMULATION=y
+# CONFIG_PM_SYSFS_DEPRECATED is not set
+CONFIG_APM=y
#
# Networking
@@ -290,13 +264,13 @@ CONFIG_NET=y
#
# Networking options
#
+# CONFIG_NETDEBUG is not set
CONFIG_PACKET=m
CONFIG_PACKET_MMAP=y
-CONFIG_UNIX=m
+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 is not set
@@ -311,22 +285,24 @@ CONFIG_SYN_COOKIES=y
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=m
-CONFIG_INET_XFRM_MODE_TUNNEL=m
-CONFIG_INET_XFRM_MODE_BEET=m
-# CONFIG_INET_LRO 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_IPV6_OPTIMISTIC_DAD is not set
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
@@ -349,23 +325,31 @@ CONFIG_NETFILTER=y
#
# CONFIG_NETFILTER_NETLINK is not set
# CONFIG_NF_CONNTRACK_ENABLED is not set
-# CONFIG_NF_CONNTRACK is not set
# CONFIG_NETFILTER_XTABLES is not set
#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_QUEUE=m
-# 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
+
+#
+# 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
@@ -419,9 +403,6 @@ CONFIG_IRTTY_SIR=m
# Dongle support
#
# CONFIG_DONGLE is not set
-# CONFIG_KINGSUN_DONGLE is not set
-# CONFIG_KSDAZZLE_DONGLE is not set
-# CONFIG_KS959_DONGLE is not set
#
# Old SIR device drivers
@@ -464,22 +445,13 @@ CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
CONFIG_BT_HCIBTUART=m
CONFIG_BT_HCIVHCI=m
-# CONFIG_AF_RXRPC is not set
-
-#
-# Wireless
-#
-# CONFIG_CFG80211 is not set
-CONFIG_WIRELESS_EXT=y
-# CONFIG_MAC80211 is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m
# CONFIG_IEEE80211_SOFTMAC is not set
-# CONFIG_RFKILL is not set
-# CONFIG_NET_9P is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -488,14 +460,20 @@ CONFIG_IEEE80211_CRYPT_TKIP=m
#
# Generic Driver Options
#
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
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 is not set
@@ -515,7 +493,6 @@ CONFIG_MTD_BLOCK=y
# CONFIG_INFTL is not set
# CONFIG_RFD_FTL is not set
# CONFIG_SSFDC is not set
-# CONFIG_MTD_OOPS is not set
#
# RAM/ROM/Flash chip drivers
@@ -535,13 +512,15 @@ CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_RAM is not set
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_SHARP 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
#
@@ -560,26 +539,43 @@ CONFIG_MTD_ROM=y
# 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
#
-# UBI - Unsorted block images
+# Parallel port support
#
-# CONFIG_MTD_UBI is not set
# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
# CONFIG_PNP is not set
-CONFIG_BLK_DEV=y
+
+#
+# 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
-CONFIG_MISC_DEVICES=y
-# CONFIG_EEPROM_93CX6 is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
CONFIG_IDE=m
CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=m
@@ -596,29 +592,15 @@ CONFIG_BLK_DEV_IDECS=m
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
-# CONFIG_BLK_DEV_PLATFORM is not set
# CONFIG_IDE_ARM is not set
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-# CONFIG_BLK_DEV_4DRIVES is not set
-# CONFIG_BLK_DEV_ALI14XX is not set
-# CONFIG_BLK_DEV_DTC2278 is not set
-# CONFIG_BLK_DEV_HT6560B is not set
-# CONFIG_BLK_DEV_QD65XX is not set
-# CONFIG_BLK_DEV_UMC8672 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
#
@@ -626,7 +608,6 @@ CONFIG_IDE_PROC_FS=y
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=m
-CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
@@ -649,7 +630,6 @@ CONFIG_SCSI_MULTI_LUN=y
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
# CONFIG_SCSI_SCAN_ASYNC is not set
-CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
@@ -657,13 +637,15 @@ CONFIG_SCSI_WAIT_SCAN=m
# 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
-# CONFIG_SCSI_SRP_ATTRS is not set
-CONFIG_SCSI_LOWLEVEL=y
+
+#
+# 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_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -676,8 +658,24 @@ CONFIG_SCSI_LOWLEVEL=y
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_LOWLEVEL_PCMCIA 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
@@ -688,21 +686,44 @@ CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
-# CONFIG_DM_MULTIPATH_RDAC is not set
-# CONFIG_DM_DELAY 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_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
-# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
-# CONFIG_VETH 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_AX88796 is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_SMC91X is not set
@@ -712,47 +733,64 @@ CONFIG_MII=m
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
# CONFIG_NET_PCI is not set
-# CONFIG_B44 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_NETDEV_10000=y
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
# CONFIG_TR is not set
#
-# Wireless LAN
+# Wireless LAN (non-hamradio)
#
-# CONFIG_WLAN_PRE80211 is not set
-# CONFIG_WLAN_80211 is not set
+CONFIG_NET_RADIO=y
+# CONFIG_NET_WIRELESS_RTNETLINK is not set
#
-# USB Network Adapters
+# 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_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_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 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_KC2190 is not set
-CONFIG_USB_NET_ZAURUS=m
CONFIG_NET_PCMCIA=y
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_PCMCIA_3C574 is not set
@@ -762,6 +800,10 @@ CONFIG_PCMCIA_PCNET=m
# 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
@@ -772,13 +814,16 @@ CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
-# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
# CONFIG_ISDN is not set
#
@@ -786,19 +831,19 @@ CONFIG_SLHC=m
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
-# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
#
-CONFIG_INPUT_MOUSEDEV=m
+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_EVDEV=m
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set
-CONFIG_INPUT_POWER=m
+CONFIG_INPUT_POWER=y
#
# Input Device Drivers
@@ -807,14 +852,12 @@ 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=m
+CONFIG_KEYBOARD_LOCOMO=y
# 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 is not set
# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
@@ -851,7 +894,15 @@ 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
@@ -865,10 +916,16 @@ CONFIG_HW_RANDOM=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
-CONFIG_DEVPORT=y
+
+#
+# I2C support
+#
CONFIG_I2C=m
-CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set
#
@@ -882,13 +939,9 @@ CONFIG_I2C_BOARDINFO=y
# I2C Hardware Bus support
#
# CONFIG_I2C_ELEKTOR is not set
-# CONFIG_I2C_GPIO is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_SIMTEC is not set
-# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_TINY_USB is not set
# CONFIG_I2C_PCA_ISA is not set
#
@@ -896,13 +949,11 @@ CONFIG_I2C_BOARDINFO=y
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_DS1682 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
@@ -924,23 +975,22 @@ CONFIG_SPI_LOCOMO=m
#
# SPI Protocol Masters
#
-# CONFIG_SPI_AT25 is not set
-# CONFIG_SPI_SPIDEV is not set
-# CONFIG_SPI_TLE62X0 is not set
+
+#
+# Dallas's 1-wire bus
+#
# CONFIG_W1 is not set
-# CONFIG_POWER_SUPPLY is not set
-# CONFIG_HWMON is not set
#
-# Sonics Silicon Backplane
+# Hardware Monitoring support
#
-CONFIG_SSB_POSSIBLE=y
-# CONFIG_SSB is not set
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
#
-# Multifunction device drivers
+# Misc devices
#
-# CONFIG_MFD_SM501 is not set
+# CONFIG_TIFM_CORE is not set
#
# Multimedia Capabilities Port drivers
@@ -948,31 +998,59 @@ CONFIG_SSB_POSSIBLE=y
CONFIG_MCP=y
CONFIG_MCP_SA11X0=y
CONFIG_MCP_UCB1200=y
-# CONFIG_MCP_UCB1200_AUDIO is not set
CONFIG_MCP_UCB1200_TS=m
-CONFIG_MCP_COLLIE_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
-CONFIG_VIDEO_CAPTURE_DRIVERS=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
-CONFIG_V4L_USB_DRIVERS=y
+
+#
+# V4L USB devices
+#
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_USBVISION is not set
@@ -989,8 +1067,10 @@ CONFIG_V4L_USB_DRIVERS=y
# CONFIG_USB_STV680 is not set
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
-# CONFIG_USB_ZR364XX is not set
-CONFIG_RADIO_ADAPTERS=y
+
+#
+# Radio Adapters
+#
# CONFIG_RADIO_CADET is not set
# CONFIG_RADIO_RTRACK is not set
# CONFIG_RADIO_RTRACK2 is not set
@@ -1003,46 +1083,25 @@ CONFIG_RADIO_ADAPTERS=y
# CONFIG_RADIO_TYPHOON is not set
# CONFIG_RADIO_ZOLTRIX is not set
# CONFIG_USB_DSBR is not set
-# CONFIG_DVB_CORE is not set
-CONFIG_DAB=y
-# CONFIG_USB_DABUSB is not set
#
-# Graphics support
+# Digital Video Broadcasting Devices
#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=m
-# CONFIG_LCD_LTV350QV is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LOCOMO=y
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
#
-# Display device support
+# Graphics support
#
-# CONFIG_DISPLAY_SUPPORT is not set
-# CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
-# CONFIG_FB_DDC is not set
+CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_SYS_FILLRECT is not set
-# CONFIG_FB_SYS_COPYAREA is not set
-# CONFIG_FB_SYS_IMAGEBLIT is not set
-# CONFIG_FB_SYS_FOPS is not set
-CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
-
-#
-# Frame buffer hardware drivers
-#
CONFIG_FB_SA1100=y
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set
@@ -1054,7 +1113,6 @@ CONFIG_FB_SA1100=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
CONFIG_FONTS=y
CONFIG_FONT_8x8=y
@@ -1067,7 +1125,17 @@ CONFIG_FONT_8x8=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=m
+CONFIG_LCD_DEVICE=y
+CONFIG_BACKLIGHT_LOCOMO=y
#
# Sound
@@ -1107,7 +1175,6 @@ CONFIG_SND_DUMMY=m
# USB devices
#
# CONFIG_SND_USB_AUDIO is not set
-# CONFIG_SND_USB_CAIAQ is not set
#
# PCMCIA devices
@@ -1116,37 +1183,23 @@ CONFIG_SND_DUMMY=m
# CONFIG_SND_PDAUDIOCF is not set
#
-# System on Chip audio support
+# SoC audio support
#
# CONFIG_SND_SOC is not set
#
-# SoC Audio support for SuperH
-#
-
-#
# Open Sound System
#
# CONFIG_SOUND_PRIME is not set
-CONFIG_HID_SUPPORT=y
-CONFIG_HID=m
-# CONFIG_HID_DEBUG is not set
-# CONFIG_HIDRAW is not set
#
-# USB Input Devices
+# HID Devices
#
-CONFIG_USB_HID=m
-# CONFIG_USB_HIDINPUT_POWERBOOK is not set
-# CONFIG_HID_FF is not set
-# CONFIG_USB_HIDDEV is not set
+CONFIG_HID=m
#
-# USB HID Boot Protocol drivers
+# USB support
#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -1157,10 +1210,9 @@ CONFIG_USB=m
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_PERSIST is not set
# CONFIG_USB_OTG is not set
#
@@ -1169,7 +1221,6 @@ CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_CS=m
-# CONFIG_USB_R8A66597_HCD is not set
#
# USB Device Class drivers
@@ -1199,10 +1250,60 @@ CONFIG_USB_STORAGE=m
# 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
#
@@ -1218,7 +1319,6 @@ CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_AIRPRIME=m
CONFIG_USB_SERIAL_ARK3116=m
CONFIG_USB_SERIAL_BELKIN=m
-# CONFIG_USB_SERIAL_CH341 is not set
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
@@ -1254,7 +1354,6 @@ CONFIG_USB_SERIAL_MCT_U232=m
# CONFIG_USB_SERIAL_MOS7840 is not set
# CONFIG_USB_SERIAL_NAVMAN is not set
CONFIG_USB_SERIAL_PL2303=m
-# CONFIG_USB_SERIAL_OTI6858 is not set
CONFIG_USB_SERIAL_HP4X=m
CONFIG_USB_SERIAL_SAFE=m
# CONFIG_USB_SERIAL_SAFE_PADDED is not set
@@ -1277,7 +1376,6 @@ CONFIG_USB_EZUSB=y
# 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
@@ -1287,7 +1385,6 @@ CONFIG_USB_EZUSB=y
# 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
#
@@ -1298,39 +1395,36 @@ CONFIG_USB_EZUSB=y
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
-CONFIG_MMC=m
-CONFIG_MMC_DEBUG=y
-# CONFIG_MMC_UNSAFE_RESUME is not set
+# 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 Drivers
+# MMC/SD Card support
#
+CONFIG_MMC=m
+CONFIG_MMC_DEBUG=y
CONFIG_MMC_BLOCK=m
-CONFIG_MMC_BLOCK_BOUNCE=y
-# CONFIG_SDIO_UART is not set
-
-#
-# MMC/SD Host Controller Drivers
-#
+# CONFIG_MMC_TIFM_SD is not set
CONFIG_MMC_SPI=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=m
+CONFIG_MMC_UNSAFE_RESUME=y
-#
-# LED drivers
-#
-CONFIG_LEDS_LOCOMO=m
-# CONFIG_LEDS_GPIO is not set
#
-# LED Triggers
+# Real Time Clock
#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=m
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
#
# RTC interfaces
@@ -1339,57 +1433,27 @@ CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
-# CONFIG_RTC_DRV_TEST is not set
#
-# I2C RTC drivers
+# RTC drivers
#
+# CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_DS1307 is not set
-# CONFIG_RTC_DRV_DS1672 is not set
-# CONFIG_RTC_DRV_MAX6900 is not set
-# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
-# CONFIG_RTC_DRV_X1205 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_M41T80 is not set
-
-#
-# SPI RTC drivers
-#
# CONFIG_RTC_DRV_RS5C348 is not set
-# CONFIG_RTC_DRV_MAX6902 is not set
-
-#
-# Platform RTC drivers
-#
-# CONFIG_RTC_DRV_CMOS is not set
-# CONFIG_RTC_DRV_DS1553 is not set
-# CONFIG_RTC_DRV_STK17TA8 is not set
-# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
# CONFIG_RTC_DRV_M48T86 is not set
-# CONFIG_RTC_DRV_M48T59 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
#
-# on-CPU RTC drivers
-#
-CONFIG_RTC_DRV_SA1100=m
-
-#
-# DMA Engine support
-#
-# CONFIG_DMA_ENGINE is not set
-
-#
-# DMA Clients
-#
-
-#
-# DMA Devices
-#
-
-#
# File systems
#
CONFIG_EXT2_FS=m
@@ -1454,13 +1518,11 @@ CONFIG_RAMFS=y
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
# CONFIG_JFFS2_SUMMARY is not set
# CONFIG_JFFS2_FS_XATTR is not set
-# CONFIG_JFFS2_SYSFS is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_LZO=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=m
@@ -1488,7 +1550,6 @@ CONFIG_LOCKD_V4=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
-# CONFIG_SUNRPC_BIND34 is not set
CONFIG_RPCSEC_GSS_KRB5=m
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
@@ -1503,6 +1564,7 @@ CONFIG_CIFS=m
# 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
@@ -1524,14 +1586,13 @@ CONFIG_MSDOS_PARTITION=y
# CONFIG_SUN_PARTITION is not set
# CONFIG_KARMA_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
-# CONFIG_SYSV68_PARTITION is not set
#
# Native Language Support
#
-CONFIG_NLS=m
+CONFIG_NLS=y
CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
@@ -1555,7 +1616,7 @@ 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_1=y
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
@@ -1584,26 +1645,22 @@ CONFIG_NLS_UTF8=m
# Kernel hacking
#
# CONFIG_PRINTK_TIME is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-# CONFIG_MAGIC_SYSRQ 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_DETECT_SOFTLOCKUP is not set
-# CONFIG_SCHED_DEBUG 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 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_LOCK_STAT 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
@@ -1614,7 +1671,6 @@ CONFIG_DEBUG_KERNEL=y
CONFIG_FRAME_POINTER=y
# CONFIG_FORCED_INLINING is not set
# 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
@@ -1624,11 +1680,15 @@ CONFIG_DEBUG_ERRORS=y
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
CONFIG_CRYPTO=y
-CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=m
-CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=m
# CONFIG_CRYPTO_XCBC is not set
CONFIG_CRYPTO_NULL=m
@@ -1642,12 +1702,8 @@ CONFIG_CRYPTO_WP512=m
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
-# CONFIG_CRYPTO_PCBC is not set
# CONFIG_CRYPTO_LRW is not set
-# CONFIG_CRYPTO_XTS is not set
-# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=m
-# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -1659,15 +1715,15 @@ CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_ANUBIS=m
-# CONFIG_CRYPTO_SEED is not set
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_LZO is not set
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_CRC32C=m
-# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_TEST=m
-# CONFIG_CRYPTO_AUTHENC is not set
-CONFIG_CRYPTO_HW=y
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1675,13 +1731,11 @@ CONFIG_CRYPTO_HW=y
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
-CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
-CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_LZO=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAS_DMA=y
+CONFIG_IOMAP_COPY=y
+# CONFIG_SHARPSL_RC is not set
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-htcuniversal b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-htcuniversal
index 2b02621499..2b02621499 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-htcuniversal
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-htcuniversal
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-hx2000 b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-hx2000
index ee05db4e5a..ee05db4e5a 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-hx2000
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-hx2000
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-poodle b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-poodle
index 387b5e9bff..5f62891410 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-poodle
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-poodle
@@ -28,7 +28,7 @@ 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_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemuarm b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemuarm
index 35cf3f5b17..35cf3f5b17 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemuarm
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemuarm
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemux86 b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemux86
index e9eb83e2dd..e9eb83e2dd 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-qemux86
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-spitz b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-spitz
index 8e044e6a14..6116d5b215 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-spitz
@@ -40,7 +40,7 @@ CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
CONFIG_BSD_PROCESS_ACCT=y
-# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_BSD_PROCESS_ACCT_V3=y
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-tosa b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-tosa
index 74fc076608..8993aea052 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-tosa
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-tosa
@@ -26,7 +26,7 @@ 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_BSD_PROCESS_ACCT_V3=y
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-zylonite b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-zylonite
index 0321704a1f..0321704a1f 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/defconfig-zylonite
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/defconfig-zylonite
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/hostap-monitor-mode.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hostap-monitor-mode.patch
index 641fd19e50..641fd19e50 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/hostap-monitor-mode.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hostap-monitor-mode.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni-acx.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni-acx.patch
index 769674c935..769674c935 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni-acx.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni-acx.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni.patch
index 4d746749c5..4d746749c5 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/htcuni.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/htcuni.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch
new file mode 100644
index 0000000000..5d58bcf55d
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/hx2750_base-r31.patch
@@ -0,0 +1,1094 @@
+---
+ arch/arm/mach-pxa/Kconfig | 10
+ arch/arm/mach-pxa/Makefile | 1
+ arch/arm/mach-pxa/hx2750.c | 450 ++++++++++++++++++++++++++++++++++++++
+ arch/arm/mach-pxa/hx2750_test.c | 433 ++++++++++++++++++++++++++++++++++++
+ arch/arm/mach-pxa/pm.c | 5
+ arch/arm/mach-pxa/pxa25x.c | 4
+ arch/arm/mach-pxa/pxa27x.c | 4
+ include/asm-arm/arch-pxa/hx2750.h | 90 +++++++
+ 8 files changed, 995 insertions(+), 2 deletions(-)
+
+--- /dev/null
++++ linux-2.6.24-rc1/include/asm-arm/arch-pxa/hx2750.h
+@@ -0,0 +1,90 @@
++/*
++ * Hardware specific definitions for iPAQ hx2750
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@o-hand.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.
++ *
++ */
++#ifndef __ASM_ARCH_HX2750_H
++#define __ASM_ARCH_HX2750_H 1
++
++/*
++ * HX2750 (Non Standard) GPIO Definitions
++ */
++
++#define HX2750_GPIO_KEYPWR (0) /* Power button */
++#define HX2750_GPIO_BATTCOVER1 (9) /* Battery Cover Switch */
++#define HX2750_GPIO_CF_IRQ (11) /* CF IRQ? */
++#define HX2750_GPIO_USBCONNECT (12) /* USB Connected? */
++#define HX2750_GPIO_CF_DETECT (13) /* CF Card Detect? */
++#define HX2750_GPIO_EXTPWR (14) /* External Power Detect */
++#define HX2750_GPIO_BATLVL (15) /* Battery Level Detect */
++#define HX2750_GPIO_CF_PWR (17) /* CF Power? */
++#define HX2750_GPIO_SR_STROBE (18) /* Shift Register Strobe */
++#define HX2750_GPIO_CHARGE (22) /* Charging Enable (active low) */
++#define HX2750_GPIO_TSC2101_SS (24) /* TSC2101 SS# */
++#define HX2750_GPIO_BTPWR (27) /* Bluetooth Power? */
++#define HX2750_GPIO_BATTCOVER2 (33) /* Battery Cover Switch */
++#define HX2750_GPIO_SD_DETECT (38) /* MMC Card Detect */
++#define HX2750_GPIO_SR_CLK1 (52) /* Shift Register Clock */
++#define HX2750_GPIO_SR_CLK2 (53)
++#define HX2750_GPIO_CF_WIFIIRQ (54) /* CF Wifi IRQ? */
++#define HX2750_GPIO_GPIO_DIN (88) /* Shift Register Data */
++#define HX2750_GPIO_KEYLEFT (90) /* Left button */
++#define HX2750_GPIO_KEYRIGHT (91) /* Right button */
++#define HX2750_GPIO_KEYCAL (93) /* Calander button */
++#define HX2750_GPIO_KEYTASK (94) /* Task button */
++#define HX2750_GPIO_KEYSIDE (95) /* Side button */
++#define HX2750_GPIO_KEYENTER (96) /* Enter Button*/
++#define HX2750_GPIO_KEYCON (97) /* Contacts button */
++#define HX2750_GPIO_KEYMAIL (98) /* Mail button */
++#define HX2750_GPIO_BIOPWR (99) /* BIO Reader Power? */
++#define HX2750_GPIO_KEYUP (100) /* Up button */
++#define HX2750_GPIO_KEYDOWN (101) /* Down button*/
++#define HX2750_GPIO_SD_READONLY (103) /* MMC/SD Write Protection */
++#define HX2750_GPIO_LEDMAIL (106) /* Green Mail LED */
++#define HX2750_GPIO_HP_JACK (108) /* Head Phone Jack Present */
++#define HX2750_GPIO_PENDOWN (117) /* Touch Screen Pendown */
++
++
++//#define HX2750_GPIO_ () /* */
++
++/*
++ * HX2750 Interrupts
++ */
++#define HX2750_IRQ_GPIO_EXTPWR IRQ_GPIO(HX2750_GPIO_EXTPWR)
++#define HX2750_IRQ_GPIO_SD_DETECT IRQ_GPIO(HX2750_GPIO_SD_DETECT)
++#define HX2750_IRQ_GPIO_PENDOWN IRQ_GPIO(HX2750_GPIO_PENDOWN)
++#define HX2750_IRQ_GPIO_CF_DETECT IRQ_GPIO(HX2750_GPIO_CF_DETECT)
++#define HX2750_IRQ_GPIO_CF_IRQ IRQ_GPIO(HX2750_GPIO_CF_IRQ)
++#define HX2750_IRQ_GPIO_CF_WIFIIRQ IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ)
++
++/*
++ * HX2750 Extra GPIO Definitions
++ */
++
++#define HX2750_EGPIO_WIFI_PWR (1 << 11) /* Wifi power */
++#define HX2750_EGPIO_LCD_PWR (1 << 10) /* LCD Power */
++#define HX2750_EGPIO_BL_PWR (1 << 9) /* Backlight LED Power */
++#define HX2750_EGPIO_8 (1 << 8) /* */
++#define HX2750_EGPIO_7 (1 << 7) /* */
++#define HX2750_EGPIO_SD_PWR (1 << 6) /* SD Power */
++#define HX2750_EGPIO_TSC_PWR (1 << 5) /* TS Power */
++#define HX2750_EGPIO_CF0_RESET (1 << 4) /* CF0 Reset */
++#define HX2750_EGPIO_CF1_RESET (1 << 3) /* CF1 Reset */
++#define HX2750_EGPIO_2 (1 << 2) /* Power/Red LED Related?*/
++#define HX2750_EGPIO_1 (1 << 1) /* Power/Red LED Related?*/
++#define HX2750_EGPIO_PWRLED (1 << 0) /* Power/Red LED Related?*/
++
++
++void hx2750_set_egpio(unsigned int gpio);
++void hx2750_clear_egpio(unsigned int gpio);
++
++
++#endif /* __ASM_ARCH_HX2750_H */
++
+--- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/Makefile
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/Makefile
+@@ -22,6 +22,7 @@
+ obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA) += tosa.o
+ obj-$(CONFIG_MACH_EM_X270) += em-x270.o
++obj-$(CONFIG_MACH_HX2750) += hx2750.o hx2750_test.o
+
+ ifeq ($(CONFIG_MACH_ZYLONITE),y)
+ obj-y += zylonite.o
+--- /dev/null
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/hx2750_test.c
+@@ -0,0 +1,433 @@
++/*
++ * HP iPAQ hx2750 Test Development Code
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@o-hand.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/init.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/device.h>
++#include <linux/input.h>
++#include <linux/delay.h>
++#include <linux/interrupt.h>
++
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/mach/arch.h>
++
++#include <asm/arch/hx2750.h>
++#include <asm/arch/pxa-regs.h>
++
++
++static int prodval;
++
++/*
++ * Sysfs functions
++ */
++static ssize_t test1_show(struct device *dev, char *buf)
++{
++ unsigned long rp;
++
++ asm ("mrc p15, 0, %0, cr1, cr0;\n" :"=r"(rp) );
++ printk("%lx\n",rp);
++
++ asm ("mrc p15, 0, %0, cr1, cr1;\n" :"=r"(rp) );
++ printk("%lx\n",rp);
++
++ asm ("mrc p15, 0, %0, cr2, cr0;\n" :"=r"(rp) );
++ printk("%lx\n",rp);
++
++ asm ("mrc p15, 0, %0, cr3, cr0;\n" :"=r"(rp) );
++ printk("%lx\n",rp);
++
++ asm ("mrc p15, 0, %0, cr13, cr0;\n" :"=r"(rp) );
++ printk("%lx\n",rp);
++
++ return sprintf(buf, "%d\n",prodval);
++}
++extern void tsc2101_print_miscdata(struct device *dev);
++extern struct platform_device tsc2101_device;
++
++static ssize_t test1_store(struct device *dev, const char *buf, size_t count)
++{
++ prodval = simple_strtoul(buf, NULL, 10);
++
++ tsc2101_print_miscdata(&tsc2101_device.dev);
++
++ return count;
++}
++
++static DEVICE_ATTR(test1, 0644, test1_show, test1_store);
++
++static ssize_t test2_show(struct device *dev, char *buf)
++{
++ printk(KERN_ERR "SSCR0_P2: %08x\n", SSCR0_P2);
++ printk(KERN_ERR "SSCR1_P2: %08x\n", SSCR1_P2);
++ printk(KERN_ERR "SSSR_P2: %08x\n", SSSR_P2);
++ printk(KERN_ERR "SSITR_P2: %08x\n", SSITR_P2);
++ printk(KERN_ERR "SSDR_P2: %08x\n", SSDR_P2);
++ printk(KERN_ERR "SSTO_P2: %08x\n", SSTO_P2);
++ printk(KERN_ERR "SSPSP_P2: %08x\n", SSPSP_P2);
++
++ hx2750_ssp_init2();
++
++ printk(KERN_ERR "SSCR0_P2: %08x\n", SSCR0_P2);
++ printk(KERN_ERR "SSCR1_P2: %08x\n", SSCR1_P2);
++ printk(KERN_ERR "SSSR_P2: %08x\n", SSSR_P2);
++ printk(KERN_ERR "SSITR_P2: %08x\n", SSITR_P2);
++ printk(KERN_ERR "SSDR_P2: %08x\n", SSDR_P2);
++ printk(KERN_ERR "SSTO_P2: %08x\n", SSTO_P2);
++ printk(KERN_ERR "SSPSP_P2: %08x\n", SSPSP_P2);
++
++ return sprintf(buf, "%d\n",0);
++}
++
++static DEVICE_ATTR(test2, 0444, test2_show, NULL);
++
++extern unsigned int hx2750_egpio_current;
++
++static ssize_t setegpio_show(struct device *dev, char *buf)
++{
++ return sprintf(buf, "%x\n",hx2750_egpio_current);
++}
++
++static ssize_t setegpio_store(struct device *dev, const char *buf, size_t count)
++{
++ unsigned int val = simple_strtoul(buf, NULL, 10);
++
++ hx2750_set_egpio(1 << val);
++
++ return count;
++}
++
++static DEVICE_ATTR(setegpio, 0644, setegpio_show, setegpio_store);
++
++static ssize_t clregpio_show(struct device *dev, char *buf)
++{
++ return sprintf(buf, "%x\n",hx2750_egpio_current);
++}
++
++static ssize_t gpio_show(struct device *dev, char *buf)
++{
++ int i;
++
++ printk(KERN_ERR "GPIO# D S A INTER\n");
++
++ for (i=0;i<119;i++) {
++ printk(KERN_ERR " %3d: ",i);
++ if (GPDR(i) & GPIO_bit(i))
++ printk("O ");
++ else
++ printk("I ");
++ printk("%d ",(GPLR(i) & GPIO_bit(i)) != 0);
++ printk("%d ",((GAFR(i) & (0x3 << (((i) & 0xf)*2)))) >> (((i) & 0xf)*2) );
++ if (GEDR(i) & GPIO_bit(i))
++ printk("ED ");
++ if (GRER(i) & GPIO_bit(i))
++ printk("RE ");
++ if (GFER(i) & GPIO_bit(i))
++ printk("FE ");
++
++ printk("\n");
++ }
++ return sprintf(buf, "EGPIO: %x\n",hx2750_egpio_current);
++}
++
++static ssize_t clregpio_store(struct device *dev, const char *buf, size_t count)
++{
++ unsigned int val = simple_strtoul(buf, NULL, 10);
++
++ hx2750_clear_egpio(1 << val);
++
++ return count;
++}
++
++static DEVICE_ATTR(clregpio, 0644, clregpio_show, clregpio_store);
++
++
++static ssize_t gpioclr_store(struct device *dev, const char *buf, size_t count)
++{
++ int prod;
++ prod = simple_strtoul(buf, NULL, 10);
++
++ GPCR(prod) = GPIO_bit(prod);
++
++ return count;
++}
++
++static DEVICE_ATTR(gpioclr, 0644, gpio_show, gpioclr_store);
++
++static ssize_t gpioset_store(struct device *dev, const char *buf, size_t count)
++{
++ int prod;
++ prod = simple_strtoul(buf, NULL, 10);
++
++ GPSR(prod) = GPIO_bit(prod);
++
++ return count;
++}
++
++static DEVICE_ATTR(gpioset, 0644, gpio_show, gpioset_store);
++
++
++static ssize_t ssp2read_store(struct device *dev, const char *buf, size_t count)
++{
++ unsigned int val = simple_strtoul(buf, NULL, 16);
++
++ printk("Read: %08x\n",hx2750_ssp2_read(val));
++
++ return count;
++}
++
++static DEVICE_ATTR(ssp2read, 0200, NULL, ssp2read_store);
++
++static ssize_t ssp2write_store(struct device *dev, const char *buf, size_t count)
++{
++ unsigned int val = simple_strtoul(buf, NULL, 16);
++
++ printk("Write: %08x\n",hx2750_ssp2_write(val));
++
++ return count;
++}
++
++static DEVICE_ATTR(ssp2write, 0200, NULL, ssp2write_store);
++
++
++static ssize_t sspr_store(struct device *dev, const char *buf, size_t count)
++{
++ unsigned long val,ret;
++ val = simple_strtoul(buf, NULL, 0);
++
++ hx2750_tsc2101_send(1<<15,val,&ret,1);
++
++ printk("Response: %x\n",ret);
++
++ return count;
++}
++
++static DEVICE_ATTR(sspr, 0200, NULL, sspr_store);
++
++static ssize_t sspw_store(struct device *dev, const char *buf, size_t count)
++{
++ int val,ret;
++ sscanf(buf, "%lx %lx", &val, &ret);
++
++ hx2750_tsc2101_send(0,val,&ret,1);
++
++ return count;
++}
++
++static DEVICE_ATTR(sspw, 0200, NULL, sspw_store);
++
++
++extern struct pm_ops pxa_pm_ops;
++extern void pxa_cpu_resume(void);
++extern unsigned long pxa_pm_pspr_value;
++
++static int (*pxa_pm_enter_orig)(suspend_state_t state);
++
++//static struct {
++// u32 ffier, fflcr, ffmcr, ffspr, ffisr, ffdll, ffdlh;
++//} sys_ctx;
++
++u32 resstruct[20];
++
++static int hx2750_pxa_pm_enter(suspend_state_t state)
++{
++ int i;
++ u32 save[10];
++
++ PWER = 0xC0000003;// | PWER_RTC;
++ PFER = 0x00000003;
++ PRER = 0x00000003;
++
++ PGSR0=0x00000018;
++ PGSR1=0x00000380;
++ PGSR2=0x00800000;
++ PGSR3=0x00500400;
++
++ //PVCR=0x494; or 0x14;
++ //PVCR=0x14;
++ //PCMD0=0x41f;
++ //i=PISR;
++ //PICR=0x00000062;
++
++ //PCFR=0x457;
++ //PCFR=0x70; // Does not resume from sleep
++ PCFR=0x077; // was 0x477
++ PSLR=0xff100004;
++
++ resstruct[0]=0x0000b4e6;
++ resstruct[1]=0x00000001;
++ resstruct[2]=virt_to_phys(pxa_cpu_resume);
++ resstruct[3]=0xffffffff; //value for r0
++
++ resstruct[14]=0x00000078; //mcr 15, 0, r0, cr1, cr0, {0}
++ resstruct[15]=0x00000000; //mcr 15, 0, r0, cr1, cr1, {0} 0xffffffff
++ resstruct[16]=0xa0000000; //mcr 15, 0, r0, cr2, cr0, {0} 0xa0748000
++ resstruct[17]=0x00000001; //mcr 15, 0, r0, cr3, cr0, {0} 0x00000015
++ resstruct[18]=0x00000000; //mcr 15, 0, r0, cr13, cr0, {0} 0x00000000
++
++ pxa_pm_pspr_value=virt_to_phys(&resstruct[0]);
++
++ hx2750_send_egpio(3);
++
++ pxa_gpio_mode(87 | GPIO_OUT | GPIO_DFLT_HIGH);
++
++ //sys_ctx.ffier = FFIER;
++ //sys_ctx.fflcr = FFLCR;
++ //sys_ctx.ffmcr = FFMCR;
++ //sys_ctx.ffspr = FFSPR;
++ //sys_ctx.ffisr = FFISR;
++ //FFLCR |= 0x80;
++ //sys_ctx.ffdll = FFDLL;
++ //sys_ctx.ffdlh = FFDLH;
++ //FFLCR &= 0xef;
++
++ pxa_pm_enter_orig(state);
++
++ //FFMCR = sys_ctx.ffmcr;
++ //FFSPR = sys_ctx.ffspr;
++ //FFLCR = sys_ctx.fflcr;
++ //FFLCR |= 0x80;
++ //FFDLH = sys_ctx.ffdlh;
++ //FFDLL = sys_ctx.ffdll;
++ //FFLCR = sys_ctx.fflcr;
++ //FFISR = sys_ctx.ffisr;
++ //FFLCR = 0x07;
++ //FFIER = sys_ctx.ffier;
++
++ return 0;
++}
++
++static irqreturn_t hx2750_charge_int(int irq, void *dev_id, struct pt_regs *regs)
++{
++ if ((GPLR(HX2750_GPIO_EXTPWR) & GPIO_bit(HX2750_GPIO_EXTPWR)) == 0) {
++ printk("Charging On\n");
++ GPCR(HX2750_GPIO_CHARGE);
++ } else {
++ printk("Charging Off\n");
++ GPSR(HX2750_GPIO_CHARGE);
++ }
++
++ return IRQ_HANDLED;
++}
++
++
++
++
++static irqreturn_t hx2750_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ printk("Input %d changed.\n", irq-32);
++
++ return IRQ_HANDLED;
++}
++
++
++static int __init hx2750_test_probe(struct device *dev)
++{
++ pxa_gpio_mode(21 | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(HX2750_GPIO_CHARGE | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(83 | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(HX2750_GPIO_BIOPWR | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(116 | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(118 | GPIO_OUT | GPIO_DFLT_HIGH);
++
++
++ //pxa_gpio_mode(HX2750_GPIO_CF_PWR | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(HX2750_GPIO_CF_PWR | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(HX2750_GPIO_BTPWR | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(79 | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(85 | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(HX2750_GPIO_LEDMAIL | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(107 | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(114 | GPIO_OUT | GPIO_DFLT_LOW);
++
++ pxa_gpio_mode(HX2750_GPIO_BATTCOVER1 | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_BATTCOVER2 | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_CF_IRQ | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_USBCONNECT | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_CF_DETECT | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_EXTPWR | GPIO_IN);
++
++ pxa_gpio_mode(HX2750_GPIO_BATLVL | GPIO_IN);
++ //pxa_gpio_mode(HX2750_GPIO_CF_WIFIIRQ | GPIO_IN);
++ pxa_gpio_mode(80 | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_HP_JACK | GPIO_IN);
++ pxa_gpio_mode(115 | GPIO_IN);
++ pxa_gpio_mode(119 | GPIO_IN);
++
++ request_irq(IRQ_GPIO(HX2750_GPIO_BATLVL), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++ //request_irq(IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++ request_irq(IRQ_GPIO(80), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++ request_irq(IRQ_GPIO(115), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++ request_irq(IRQ_GPIO(119), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++ request_irq(IRQ_GPIO(HX2750_GPIO_SR_CLK2), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++
++ //request_irq(IRQ_GPIO(10), hx2750_interrupt, SA_INTERRUPT, "hx2750test", NULL);
++
++ set_irq_type(IRQ_GPIO(HX2750_GPIO_BATLVL),IRQT_BOTHEDGE);
++ //set_irq_type(IRQ_GPIO(HX2750_GPIO_CF_WIFIIRQ),IRQT_BOTHEDGE);
++ set_irq_type(IRQ_GPIO(80),IRQT_BOTHEDGE);
++ set_irq_type(IRQ_GPIO(115),IRQT_BOTHEDGE);
++ set_irq_type(IRQ_GPIO(119),IRQT_BOTHEDGE);
++ set_irq_type(IRQ_GPIO(HX2750_GPIO_SR_CLK2),IRQT_BOTHEDGE);
++
++ //set_irq_type(IRQ_GPIO(10),IRQT_BOTHEDGE);
++
++ printk("hx2750 Test Code Initialized.\n");
++ device_create_file(dev, &dev_attr_test1);
++ device_create_file(dev, &dev_attr_test2);
++ device_create_file(dev, &dev_attr_setegpio);
++ device_create_file(dev, &dev_attr_clregpio);
++ device_create_file(dev, &dev_attr_gpioset);
++ device_create_file(dev, &dev_attr_gpioclr);
++ device_create_file(dev, &dev_attr_sspr);
++ device_create_file(dev, &dev_attr_sspw);
++ device_create_file(dev, &dev_attr_ssp2read);
++ device_create_file(dev, &dev_attr_ssp2write);
++
++ request_irq(HX2750_IRQ_GPIO_EXTPWR, hx2750_charge_int, SA_INTERRUPT, "hx2750_extpwr", NULL);
++ set_irq_type(HX2750_IRQ_GPIO_EXTPWR, IRQT_BOTHEDGE);
++
++ pxa_pm_enter_orig=pxa_pm_ops.enter;
++ pxa_pm_ops.enter=hx2750_pxa_pm_enter;
++
++ return 0;
++}
++
++static struct device_driver hx2750_test_driver = {
++ .name = "hx2750-test",
++ .bus = &platform_bus_type,
++ .probe = hx2750_test_probe,
++// .remove = hx2750_bl_remove,
++// .suspend = hx2750_bl_suspend,
++// .resume = hx2750_bl_resume,
++};
++
++
++static int __init hx2750_test_init(void)
++{
++ return driver_register(&hx2750_test_driver);
++}
++
++
++static void __exit hx2750_test_exit(void)
++{
++ driver_unregister(&hx2750_test_driver);
++}
++
++module_init(hx2750_test_init);
++module_exit(hx2750_test_exit);
++
++MODULE_AUTHOR("Richard Purdie <richard@o-hand.com>");
++MODULE_DESCRIPTION("iPAQ hx2750 Backlight Driver");
++MODULE_LICENSE("GPLv2");
+--- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/Kconfig
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/Kconfig
+@@ -83,6 +83,15 @@
+ bool "Sharp PXA270 models (SL-Cxx00)"
+ select PXA27x
+
++config MACH_HX2750
++ bool "HP iPAQ hx2750"
++ select PXA27x
++ select PXA_KEYS
++ select MFD_TSC2101
++ select PXA_SSP
++ help
++ This enables support for the HP iPAQ HX2750 handheld.
++
+ endchoice
+
+ endif
+@@ -181,3 +190,4 @@
+ help
+ Enable support for PXA2xx SSP ports
+ endif
++
+--- /dev/null
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/hx2750.c
+@@ -0,0 +1,450 @@
++/*
++ * Machine definitions for HP iPAQ hx2750
++ *
++ * Copyright 2005 Openedhand Ltd.
++ *
++ * Author: Richard Purdie <richard@o-hand.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/init.h>
++#include <linux/kernel.h>
++#include <linux/ioport.h>
++#include <linux/platform_device.h>
++#include <linux/delay.h>
++#include <linux/input.h>
++#include <linux/irq.h>
++#include <linux/mmc/host.h>
++#include <linux/mfd/tsc2101.h>
++
++#include <asm/mach-types.h>
++#include <asm/hardware.h>
++#include <asm/mach/arch.h>
++
++#include <asm/arch/hx2750.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/pxa_keys.h>
++#include <asm/mach/map.h>
++#include <asm/arch/udc.h>
++#include <asm/arch/mmc.h>
++#include <asm/arch/audio.h>
++#include <asm/arch/pxafb.h>
++#include <asm/arch/ssp.h>
++
++#include "generic.h"
++
++
++/*
++ * Keys Support
++ */
++static struct pxa_keys_button hx2750_button_table[] = {
++ { KEY_POWER, HX2750_GPIO_KEYPWR, PXAKEY_PWR_KEY },
++ { KEY_LEFT, HX2750_GPIO_KEYLEFT, 0 },
++ { KEY_RIGHT, HX2750_GPIO_KEYRIGHT, 0 },
++ { KEY_KP0, HX2750_GPIO_KEYCAL, 0 },
++ { KEY_KP1, HX2750_GPIO_KEYTASK, 0 },
++ { KEY_KP2, HX2750_GPIO_KEYSIDE, 0 },
++ { KEY_ENTER, HX2750_GPIO_KEYENTER, 0 },
++ { KEY_KP3, HX2750_GPIO_KEYCON, 0 }, //KEY_CONTACTS
++ { KEY_MAIL, HX2750_GPIO_KEYMAIL, 0 },
++ { KEY_UP, HX2750_GPIO_KEYUP, 0 },
++ { KEY_DOWN, HX2750_GPIO_KEYDOWN, 0 },
++};
++
++static struct pxa_keys_platform_data hx2750_pxa_keys_data = {
++ .buttons = hx2750_button_table,
++ .nbuttons = ARRAY_SIZE(hx2750_button_table),
++};
++
++static struct platform_device hx2750_pxa_keys = {
++ .name = "pxa2xx-keys",
++ .dev = {
++ .platform_data = &hx2750_pxa_keys_data,
++ },
++};
++
++
++/*
++ * Backlight Device
++ */
++extern struct platform_device pxafb_device;
++
++static struct platform_device hx2750_bl_device = {
++ .name = "hx2750-bl",
++ .id = -1,
++// .dev = {
++// .parent = &pxafb_device.dev,
++// }
++};
++
++
++/*
++ * UDC/USB
++ */
++static int hx2750_udc_is_connected (void)
++{
++ return GPLR0 & GPIO_bit(HX2750_GPIO_USBCONNECT);
++}
++
++//static void hx2750_udc_command (int cmd)
++//{
++//}
++
++static struct pxa2xx_udc_mach_info hx2750_udc_mach_info = {
++ .udc_is_connected = hx2750_udc_is_connected,
++// .udc_command = hx2750_udc_command,
++};
++
++
++/*
++ * SSP Devices Setup
++ */
++static struct ssp_dev hx2750_ssp_dev1;
++static struct ssp_dev hx2750_ssp_dev2;
++static struct ssp_dev hx2750_ssp_dev3;
++
++void hx2750_ssp_init(void)
++{
++ pxa_gpio_mode(HX2750_GPIO_TSC2101_SS | GPIO_OUT | GPIO_DFLT_HIGH);
++
++ if (ssp_init(&hx2750_ssp_dev1, 1, 0))
++ printk(KERN_ERR "Unable to register SSP1 handler!\n");
++ else {
++ ssp_disable(&hx2750_ssp_dev1);
++ ssp_config(&hx2750_ssp_dev1, (SSCR0_Motorola | (SSCR0_DSS & 0x0f )), SSCR1_SPH, 0, SSCR0_SerClkDiv(6));
++ ssp_enable(&hx2750_ssp_dev1);
++ hx2750_set_egpio(HX2750_EGPIO_TSC_PWR);
++ }
++
++// if (ssp_init(&hx2750_ssp_dev2, 2, 0))
++// printk(KERN_ERR "Unable to register SSP2 handler!\n");
++// else {
++// ssp_disable(&hx2750_ssp_dev2);
++// ssp_config(&hx2750_ssp_dev2, (SSCR0_TI | (SSCR0_DSS & 0x09 )), 0, 0, SSCR0_SerClkDiv(140));
++// ssp_enable(&hx2750_ssp_dev2);
++// }
++//
++ if (ssp_init(&hx2750_ssp_dev3, 3, 0))
++ printk(KERN_ERR "Unable to register SSP3 handler!\n");
++ else {
++ ssp_disable(&hx2750_ssp_dev3);
++ ssp_config(&hx2750_ssp_dev3, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), SSCR1_SPO | SSCR1_SPH, 0, SSCR0_SerClkDiv(166));
++ ssp_enable(&hx2750_ssp_dev3);
++ }
++
++ printk("SSP Devices Initialised\n");
++
++ return;
++}
++
++struct ssp_state ssp1;
++
++void hx2750_ssp_suspend(void)
++{
++ ssp_disable(&hx2750_ssp_dev1);
++ ssp_save_state(&hx2750_ssp_dev1,&ssp1);
++ hx2750_clear_egpio(HX2750_EGPIO_TSC_PWR);
++}
++
++void hx2750_ssp_resume(void)
++{
++ hx2750_set_egpio(HX2750_EGPIO_TSC_PWR);
++ ssp_restore_state(&hx2750_ssp_dev1,&ssp1);
++ ssp_enable(&hx2750_ssp_dev1);
++}
++
++void hx2750_ssp_init2(void)
++{
++ printk("Stage 1: %x\n",CKEN);
++ if (ssp_init(&hx2750_ssp_dev2, 2, 0))
++ printk(KERN_ERR "Unable to register SSP2 handler!\n");
++ else {
++ printk("Stage 2: %x\n",CKEN);
++ ssp_disable(&hx2750_ssp_dev2);
++ printk("Stage 3: %x\n",CKEN);
++ ssp_config(&hx2750_ssp_dev2, (SSCR0_TI | (SSCR0_DSS & 0x09 )) | SSCR0_SSE, 0, 0, SSCR0_SerClkDiv(212));
++ printk("Stage 4: %x\n",CKEN);
++ ssp_enable(&hx2750_ssp_dev2);
++ printk("Stage 5: %x\n",CKEN);
++ }
++ printk("SSP Device2 Initialised\n");
++
++ printk("Sent: 0x3ff\n");
++ ssp_write_word(&hx2750_ssp_dev2,0x3ff);
++
++ return;
++}
++
++void hx2750_ssp2_reset(void)
++{
++ ssp_write_word(&hx2750_ssp_dev2,0x000);
++ ssp_write_word(&hx2750_ssp_dev2,0x000);
++
++}
++
++unsigned long hx2750_ssp2_read(void)
++{
++ u32 ret = 0;
++ ssp_read_word(&hx2750_ssp_dev2, &ret);
++ return ret;
++}
++
++void hx2750_ssp2_write(unsigned long data)
++{
++ ssp_write_word(&hx2750_ssp_dev2, data);
++}
++
++
++/*
++ * Extra hx2750 Specific GPIOs
++ */
++void hx2750_send_egpio(unsigned int val)
++{
++ int i;
++
++ GPCR0 = GPIO_bit(HX2750_GPIO_SR_STROBE);
++ GPCR1 = GPIO_bit(HX2750_GPIO_SR_CLK1);
++
++ for (i=0;i<12;i++) {
++ if (val & 0x01)
++ GPSR2 = GPIO_bit(HX2750_GPIO_GPIO_DIN);
++ else
++ GPCR2 = GPIO_bit(HX2750_GPIO_GPIO_DIN);
++ val >>= 1;
++ GPSR1 = GPIO_bit(HX2750_GPIO_SR_CLK1);
++ GPCR1 = GPIO_bit(HX2750_GPIO_SR_CLK1);
++ }
++
++ GPSR0 = GPIO_bit(HX2750_GPIO_SR_STROBE);
++ GPCR0 = GPIO_bit(HX2750_GPIO_SR_STROBE);
++}
++
++EXPORT_SYMBOL(hx2750_send_egpio);
++
++unsigned int hx2750_egpio_current;
++
++void hx2750_set_egpio(unsigned int gpio)
++{
++ hx2750_egpio_current|=gpio;
++
++ hx2750_send_egpio(hx2750_egpio_current);
++}
++EXPORT_SYMBOL(hx2750_set_egpio);
++
++void hx2750_clear_egpio(unsigned int gpio)
++{
++ hx2750_egpio_current&=~gpio;
++
++ hx2750_send_egpio(hx2750_egpio_current);
++}
++EXPORT_SYMBOL(hx2750_clear_egpio);
++
++
++/*
++ * Touchscreen/Sound/Battery Status
++ */
++void hx2750_tsc2101_send(int read, int command, int *values, int numval)
++{
++ u32 ret = 0;
++ int i;
++
++ GPCR0 = GPIO_bit(HX2750_GPIO_TSC2101_SS);
++
++ ssp_write_word(&hx2750_ssp_dev1, command | read);
++ /* dummy read */
++ ssp_read_word(&hx2750_ssp_dev1, &ret);
++
++ for (i=0; i < numval; i++) {
++ if (read) {
++ ssp_write_word(&hx2750_ssp_dev1, 0);
++ ssp_read_word(&hx2750_ssp_dev1, &values[i]);
++ } else {
++ ssp_write_word(&hx2750_ssp_dev1, values[i]);
++ ssp_read_word(&hx2750_ssp_dev1, &ret);
++ }
++ }
++
++ GPSR0 = GPIO_bit(HX2750_GPIO_TSC2101_SS);
++}
++
++static int hx2750_tsc2101_pendown(void)
++{
++ if ((GPLR(HX2750_GPIO_PENDOWN) & GPIO_bit(HX2750_GPIO_PENDOWN)) == 0)
++ return 1;
++ return 0;
++}
++
++static struct tsc2101_platform_info hx2750_tsc2101_info = {
++ .send = hx2750_tsc2101_send,
++ .suspend = hx2750_ssp_suspend,
++ .resume = hx2750_ssp_resume,
++ .irq = HX2750_IRQ_GPIO_PENDOWN,
++ .pendown = hx2750_tsc2101_pendown,
++};
++
++struct platform_device tsc2101_device = {
++ .name = "tsc2101",
++ .dev = {
++ .platform_data = &hx2750_tsc2101_info,
++ //.parent = &corgissp_device.dev,
++ },
++ .id = -1,
++};
++
++
++/*
++ * MMC/SD Device
++ *
++ * The card detect interrupt isn't debounced so we delay it by 250ms
++ * to give the card a chance to fully insert/eject.
++ */
++static struct pxamci_platform_data hx2750_mci_platform_data;
++
++static int hx2750_mci_init(struct device *dev, irq_handler_t hx2750_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);
++ pxa_gpio_mode(HX2750_GPIO_SD_DETECT | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_SD_READONLY | GPIO_IN);
++
++ hx2750_mci_platform_data.detect_delay = msecs_to_jiffies(250);
++
++ err = request_irq(HX2750_IRQ_GPIO_SD_DETECT, hx2750_detect_int,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
++ "MMC card detect", data);
++ if (err) {
++ printk(KERN_ERR "hx2750_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
++ return -1;
++ }
++
++ return 0;
++}
++
++static void hx2750_mci_setpower(struct device *dev, unsigned int vdd)
++{
++ struct pxamci_platform_data* p_d = dev->platform_data;
++
++ if (( 1 << vdd) & p_d->ocr_mask)
++ hx2750_set_egpio(HX2750_EGPIO_SD_PWR);
++ else
++ hx2750_clear_egpio(HX2750_EGPIO_SD_PWR);
++}
++
++static void hx2750_mci_exit(struct device *dev, void *data)
++{
++ free_irq(HX2750_IRQ_GPIO_SD_DETECT, data);
++}
++
++static struct pxamci_platform_data hx2750_mci_platform_data = {
++ .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
++ .init = hx2750_mci_init,
++ .setpower = hx2750_mci_setpower,
++ .exit = hx2750_mci_exit,
++};
++
++
++/*
++ * FrameBuffer
++ */
++static struct pxafb_mode_info hx2750_pxafb_modes = {
++ .pixclock = 288462,
++ .xres = 240,
++ .yres = 320,
++ .bpp = 16,
++ .hsync_len = 20,
++ .left_margin = 42,
++ .right_margin = 18,
++ .vsync_len = 4,
++ .upper_margin = 3,
++ .lower_margin = 4,
++ .sync = 0,
++};
++
++static struct pxafb_mach_info hx2750_pxafb_info = {
++ .modes = &hx2750_pxafb_modes,
++ .num_modes = 1,
++ .fixed_modes = 1,
++ .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
++ .lccr3 = LCCR3_PixFlEdg | LCCR3_OutEnH,
++ .pxafb_backlight_power = NULL,
++};
++
++
++/*
++ * Test Device
++ */
++static struct platform_device hx2750_test_device = {
++ .name = "hx2750-test",
++ .id = -1,
++};
++
++
++/* Initialization code */
++static struct platform_device *devices[] __initdata = {
++ &hx2750_bl_device,
++ &hx2750_test_device,
++ &hx2750_pxa_keys,
++ &tsc2101_device,
++};
++
++static void __init hx2750_init( void )
++{
++ PWER = 0xC0000003;// | PWER_RTC;
++ PFER = 0x00000003;
++ PRER = 0x00000003;
++
++ PGSR0=0x00000018;
++ PGSR1=0x00000380;
++ PGSR2=0x00800000;
++ PGSR3=0x00500400;
++
++ //PCFR |= PCFR_OPDE;
++ PCFR=0x77;
++ PSLR=0xff100000;
++ //PCFR=0x10; - does not return from suspend
++
++ //PCFR= 0x00004040;
++ //PSLR= 0xff400f04;
++
++ /* Setup Extra GPIO Bank access */
++ pxa_gpio_mode(HX2750_GPIO_GPIO_DIN | GPIO_OUT | GPIO_DFLT_HIGH);
++ pxa_gpio_mode(HX2750_GPIO_SR_CLK1 | GPIO_OUT | GPIO_DFLT_LOW);
++ pxa_gpio_mode(HX2750_GPIO_SR_CLK2 | GPIO_IN);
++ pxa_gpio_mode(HX2750_GPIO_SR_STROBE | GPIO_OUT | GPIO_DFLT_LOW);
++
++ /* Init Extra GPIOs - Bootloader reset default is 0x484 */
++ /* This is 0xe84 */
++ hx2750_set_egpio(HX2750_EGPIO_2 | HX2750_EGPIO_7 | HX2750_EGPIO_LCD_PWR | HX2750_EGPIO_BL_PWR | HX2750_EGPIO_WIFI_PWR);
++
++ pxa_set_udc_info(&hx2750_udc_mach_info);
++ pxa_set_mci_info(&hx2750_mci_platform_data);
++ set_pxa_fb_info(&hx2750_pxafb_info);
++ hx2750_ssp_init();
++ platform_add_devices (devices, ARRAY_SIZE (devices));
++}
++
++
++MACHINE_START(HX2750, "HP iPAQ HX2750")
++ .phys_io = 0x40000000,
++ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
++ .boot_params = 0xa0000100,
++ .map_io = pxa_map_io,
++ .init_irq = pxa_init_irq,
++ .timer = &pxa_timer,
++ .init_machine = hx2750_init,
++MACHINE_END
++
+--- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/pm.c
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/pm.c
+@@ -17,6 +17,7 @@
+ #include <linux/time.h>
+
+ #include <asm/hardware.h>
++#include <asm/mach-types.h>
+ #include <asm/memory.h>
+ #include <asm/system.h>
+ #include <asm/arch/pm.h>
+@@ -91,6 +92,9 @@
+ .enter = pxa_pm_enter,
+ };
+
++unsigned long pxa_pm_pspr_value;
++extern void pxa_cpu_resume(void);
++
+ static int __init pxa_pm_init(void)
+ {
+ if (!pxa_cpu_pm_fns) {
+@@ -104,6 +108,7 @@
+ return -ENOMEM;
+ }
+
++ pxa_pm_pspr_value=virt_to_phys(pxa_cpu_resume);
+ suspend_set_ops(&pxa_pm_ops);
+ return 0;
+ }
+--- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/pxa27x.c
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/pxa27x.c
+@@ -259,6 +259,8 @@
+ RESTORE(PSTR);
+ }
+
++extern unsigned long pxa_pm_pspr_value;
++
+ void pxa27x_cpu_pm_enter(suspend_state_t state)
+ {
+ extern void pxa_cpu_standby(void);
+@@ -281,7 +283,7 @@
+ break;
+ case PM_SUSPEND_MEM:
+ /* set resume return address */
+- PSPR = virt_to_phys(pxa_cpu_resume);
++ PSPR = pxa_pm_pspr_value;
+ pxa27x_cpu_suspend(PWRMODE_SLEEP);
+ break;
+ }
+--- linux-2.6.24-rc1.orig/arch/arm/mach-pxa/pxa25x.c
++++ linux-2.6.24-rc1/arch/arm/mach-pxa/pxa25x.c
+@@ -200,6 +200,8 @@
+ RESTORE(PSTR);
+ }
+
++extern unsigned long pxa_pm_pspr_value;
++
+ static void pxa25x_cpu_pm_enter(suspend_state_t state)
+ {
+ CKEN = 0;
+@@ -207,7 +209,7 @@
+ switch (state) {
+ case PM_SUSPEND_MEM:
+ /* set resume return address */
+- PSPR = virt_to_phys(pxa_cpu_resume);
++ PSPR = pxa_pm_pspr_value;
+ pxa25x_cpu_suspend(PWRMODE_SLEEP);
+ break;
+ }
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/mmcsd_no_scr_check-r2.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/mmcsd_no_scr_check-r2.patch
index ac2245f088..ac2245f088 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/mmcsd_no_scr_check-r2.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/mmcsd_no_scr_check-r2.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pda-power.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pda-power.patch
index face2f4ef2..face2f4ef2 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pda-power.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pda-power.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pxa-serial-hack.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa-serial-hack.patch
index bf20f46a05..bf20f46a05 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pxa-serial-hack.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa-serial-hack.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa27x_overlay-r8.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa27x_overlay-r8.patch
new file mode 100644
index 0000000000..693ad20453
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa27x_overlay-r8.patch
@@ -0,0 +1,2427 @@
+ drivers/video/Kconfig | 18
+ drivers/video/Makefile | 1
+ drivers/video/pxafb.c | 305 +++++--
+ drivers/video/pxafb.h | 65 +
+ drivers/video/pxafb_overlay.c | 1525 ++++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-pxa/pxa-regs.h | 111 ++
+ 6 files changed, 1969 insertions(+), 56 deletions(-)
+
+--- linux-2.6.24-rc1.orig/drivers/video/Kconfig
++++ linux-2.6.24-rc1/drivers/video/Kconfig
+@@ -1718,6 +1718,24 @@
+
+ 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
+--- linux-2.6.24-rc1.orig/drivers/video/Makefile
++++ linux-2.6.24-rc1/drivers/video/Makefile
+@@ -96,6 +96,7 @@
+ 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
+--- linux-2.6.24-rc1.orig/drivers/video/pxafb.c
++++ linux-2.6.24-rc1/drivers/video/pxafb.c
+@@ -59,17 +59,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] __devinitdata = "";
+ #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;
+@@ -209,6 +241,10 @@
+ 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;
+ }
+@@ -320,18 +356,34 @@
+ * 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",
+@@ -345,7 +397,7 @@
+ 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 */
+ }
+
+ /*
+@@ -360,7 +412,8 @@
+
+ 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;
+@@ -373,12 +426,25 @@
+ 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;
++ }
+
+ if ((fbi->lccr4 & LCCR4_PAL_FOR_MASK) == LCCR4_PAL_FOR_0)
+ palette_mem_size = fbi->palette_size * sizeof(u16);
+@@ -395,7 +461,8 @@
+ */
+ 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);
+@@ -441,7 +508,7 @@
+ * 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;
+@@ -458,19 +525,20 @@
+ 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)
+@@ -606,6 +674,10 @@
+ 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",
+@@ -637,7 +709,10 @@
+
+ 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) +
+@@ -696,7 +771,7 @@
+
+ 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;
+@@ -708,7 +783,8 @@
+ sizeof(u32);
+ fbi->dmadesc_palette_cpu->ldcmd |= 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 */
+@@ -763,8 +839,8 @@
+ }
+
+ /*
+- * 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
+ */
+@@ -786,7 +862,8 @@
+
+ static void pxafb_setup_gpio(struct pxafb_info *fbi)
+ {
+- int gpio, ldd_bits;
++ int gpio;
++ int ldd_bits = 0;
+ unsigned int lccr0 = fbi->lccr0;
+
+ /*
+@@ -796,28 +873,56 @@
+ /* 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);
+@@ -837,6 +942,7 @@
+ /* enable LCD controller clock */
+ clk_enable(fbi->clk);
+
++ down(&fcs_lcd_sem);
+ /* Sequence from 11.7.10 */
+ LCCR3 = fbi->reg_lccr3;
+ LCCR2 = fbi->reg_lccr2;
+@@ -847,6 +953,8 @@
+ 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);
+@@ -862,6 +970,7 @@
+
+ pr_debug("pxafb: disabling LCD controller\n");
+
++ down(&fcs_lcd_sem);
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ add_wait_queue(&fbi->ctrlr_wait, &wait);
+
+@@ -871,6 +980,7 @@
+
+ schedule_timeout(200 * HZ / 1000);
+ remove_wait_queue(&fbi->ctrlr_wait, &wait);
++ up(&fcs_lcd_sem);
+
+ /* disable LCD controller clock */
+ clk_disable(fbi->clk);
+@@ -888,6 +998,11 @@
+ 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;
+@@ -898,7 +1013,7 @@
+ * 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;
+
+@@ -920,7 +1035,9 @@
+ */
+ 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;
+@@ -934,6 +1051,8 @@
+ 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);
+ }
+@@ -947,7 +1066,9 @@
+ 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;
+
+@@ -959,9 +1080,13 @@
+ */
+ 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;
+@@ -987,11 +1112,46 @@
+ 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)
+@@ -1003,7 +1163,7 @@
+ container_of(work, struct pxafb_info, task);
+ u_int state = xchg(&fbi->task_state, -1);
+
+- set_ctrlr_state(fbi, state);
++ pxafb_set_ctrlr_state(fbi, state);
+ }
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -1018,19 +1178,29 @@
+ 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:
+- pcd = get_pcd(fbi, fbi->fb.var.pixclock);
++ 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;
+@@ -1049,7 +1219,7 @@
+ 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:
+@@ -1075,7 +1245,7 @@
+ {
+ 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;
+ }
+
+@@ -1083,7 +1253,11 @@
+ {
+ 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
+@@ -1197,11 +1371,21 @@
+ 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);
+ init_MUTEX(&fbi->ctrlr_sem);
+@@ -1268,6 +1452,10 @@
+ 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;
+@@ -1416,7 +1604,7 @@
+ 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;
+ }
+
+@@ -1451,7 +1639,7 @@
+ }
+
+ #ifdef CONFIG_PM
+- // TODO
++ /* TODO */
+ #endif
+
+ #ifdef CONFIG_CPU_FREQ
+@@ -1464,7 +1652,12 @@
+ /*
+ * 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;
+
+--- linux-2.6.24-rc1.orig/drivers/video/pxafb.h
++++ linux-2.6.24-rc1/drivers/video/pxafb.h
+@@ -29,6 +29,60 @@
+ 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;
+@@ -90,6 +144,14 @@
+ 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;
+@@ -109,6 +171,9 @@
+ #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"
+
+--- /dev/null
++++ linux-2.6.24-rc1/drivers/video/pxafb_overlay.c
+@@ -0,0 +1,1525 @@
++/*
++ * 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;
++ }
++}
++
++static int is_pxafb_device(struct device * dev, void * data)
++{
++ struct platform_device *pdev = container_of(dev, struct platform_device, dev);
++
++ return (strncmp(pdev->name, "pxa2xx-fb", 9) == 0);
++}
++
++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 = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device);
++ if (!dev) {
++ 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 = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device);
++ if (!dev)
++ return;
++
++ fbi = dev_get_drvdata(dev);
++ if (!fbi)
++ 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");
++
+--- linux-2.6.24-rc1.orig/include/asm-arm/arch-pxa/pxa-regs.h
++++ linux-2.6.24-rc1/include/asm-arm/arch-pxa/pxa-regs.h
+@@ -789,11 +789,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 */
+@@ -1827,6 +1834,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 */
+@@ -1836,6 +1845,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 LCCR3_PDFOR_0 (0 << 30)
+ #define LCCR3_PDFOR_1 (1 << 30)
+@@ -2010,6 +2023,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/linux-rp-2.6.23+2.6.24-rc0+git/pxa_fb_overlay.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa_fb_overlay.patch
index 49c59b3275..49c59b3275 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/pxa_fb_overlay.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/pxa_fb_overlay.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
index b513ba1466..b513ba1466 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/serial-add-support-for-non-standard-xtals-to-16c950-driver.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/squashfs3.0-2.6.15.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.0-2.6.15.patch
index a210afcaf8..a210afcaf8 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/squashfs3.0-2.6.15.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.0-2.6.15.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.2-2.6.20-r0.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.2-2.6.20-r0.patch
new file mode 100644
index 0000000000..3870b317e4
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/squashfs3.2-2.6.20-r0.patch
@@ -0,0 +1,4376 @@
+--- linux-2.6.24-rc1.orig/fs/Kconfig
++++ linux-2.6.24-rc1/fs/Kconfig
+@@ -1405,6 +1405,71 @@
+
+ If unsure, say N.
+
++config SQUASHFS
++ tristate "SquashFS 3.2 - Squashed file system support"
++ select ZLIB_INFLATE
++ help
++ Saying Y here includes support for SquashFS 3.2 (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)"
+ depends on BLOCK
+--- linux-2.6.24-rc1.orig/fs/Makefile
++++ linux-2.6.24-rc1/fs/Makefile
+@@ -72,6 +72,7 @@
+ obj-$(CONFIG_JBD2) += jbd2/
+ obj-$(CONFIG_EXT2_FS) += ext2/
+ obj-$(CONFIG_CRAMFS) += cramfs/
++obj-$(CONFIG_SQUASHFS) += squashfs/
+ obj-y += ramfs/
+ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/
+ obj-$(CONFIG_CODA_FS) += coda/
+--- /dev/null
++++ linux-2.6.24-rc1/fs/squashfs/inode.c
+@@ -0,0 +1,2329 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/vmalloc.h>
++#include <linux/smp_lock.h>
++
++#include "squashfs.h"
++
++static void vfs_read_inode(struct inode *i);
++static struct dentry *squashfs_get_parent(struct dentry *child);
++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++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_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 dentry *squashfs_lookup(struct inode *, struct dentry *,
++ struct nameidata *);
++static int squashfs_remount(struct super_block *s, int *flags, char *data);
++static void squashfs_put_super(struct super_block *);
++static int squashfs_get_sb(struct file_system_type *,int, const char *, void *,
++ struct vfsmount *);
++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 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 const 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_super_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++ .remount_fs = squashfs_remount
++};
++
++static struct super_operations squashfs_export_super_ops = {
++ .alloc_inode = squashfs_alloc_inode,
++ .destroy_inode = squashfs_destroy_inode,
++ .statfs = squashfs_statfs,
++ .put_super = squashfs_put_super,
++ .read_inode = vfs_read_inode
++};
++
++static struct export_operations squashfs_export_ops = {
++ .get_parent = squashfs_get_parent
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = {
++ .readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_aops = {
++ .readpage = squashfs_readpage
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_aops_4K = {
++ .readpage = squashfs_readpage4K
++};
++
++static const 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, int srclength)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ 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 = 0;
++ unsigned int compressed;
++ unsigned int c_byte = length;
++
++ if (c_byte) {
++ bytes = msblk->devblksize - offset;
++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte, srclength);
++
++ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
++ goto read_failure;
++
++ 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 (index < 0 || (index + 2) > sblk->bytes_used)
++ goto read_failure;
++
++ 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_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++ ? "" : "un", (unsigned int) c_byte);
++
++ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used)
++ goto read_failure;
++
++ 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) {
++ int zlib_err = 0;
++
++ /*
++ * uncompress block
++ */
++
++ mutex_lock(&msblk->read_data_mutex);
++
++ msblk->stream.next_out = buffer;
++ msblk->stream.avail_out = srclength;
++
++ for (bytes = 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 release_mutex;
++
++ msblk->stream.next_in = bh[k]->b_data + offset;
++ msblk->stream.avail_in = avail_bytes;
++
++ if (k == 0) {
++ zlib_err = zlib_inflateInit(&msblk->stream);
++ if (zlib_err != Z_OK) {
++ ERROR("zlib_inflateInit returned unexpected result 0x%x, srclength %d\n",
++ zlib_err, srclength);
++ goto release_mutex;
++ }
++
++ if (avail_bytes == 0) {
++ offset = 0;
++ brelse(bh[k]);
++ continue;
++ }
++ }
++
++ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
++ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) {
++ ERROR("zlib_inflate returned unexpected result 0x%x, srclength %d, avail_in %d, avail_out %d\n",
++ zlib_err, srclength, msblk->stream.avail_in, msblk->stream.avail_out);
++ goto release_mutex;
++ }
++
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++
++ if (zlib_err != Z_STREAM_END)
++ goto release_mutex;
++
++ zlib_err = zlib_inflateEnd(&msblk->stream);
++ if (zlib_err != Z_OK) {
++ ERROR("zlib_inflateEnd returned unexpected result 0x%x, srclength %d\n",
++ zlib_err, srclength);
++ goto release_mutex;
++ }
++ bytes = msblk->stream.total_out;
++ mutex_unlock(&msblk->read_data_mutex);
++ } else {
++ int i;
++
++ for(i = 0; i < b; i++) {
++ wait_on_buffer(bh[i]);
++ if(!buffer_uptodate(bh[i]))
++ goto block_release;
++ }
++
++ for (bytes = 0; k < b; k++) {
++ avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++ msblk->devblksize - offset :
++ c_byte - bytes;
++ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++ bytes += avail_bytes;
++ offset = 0;
++ brelse(bh[k]);
++ }
++ }
++
++ if (next_index)
++ *next_index = index + c_byte + (length ? 0 :
++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++ ? 3 : 2));
++ return bytes;
++
++release_mutex:
++ mutex_unlock(&msblk->read_data_mutex);
++
++block_release:
++ for (; k < b; k++)
++ brelse(bh[k]);
++
++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;
++
++ mutex_lock(&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);
++ mutex_unlock(&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");
++ mutex_unlock(&msblk->block_cache_mutex);
++ goto out;
++ }
++ }
++
++ msblk->block_cache[i].block = SQUASHFS_USED_BLK;
++ mutex_unlock(&msblk->block_cache_mutex);
++
++ msblk->block_cache[i].length = squashfs_read_data(s,
++ msblk->block_cache[i].data, block, 0, &next_index, SQUASHFS_METADATA_SIZE);
++ if (msblk->block_cache[i].length == 0) {
++ ERROR("Unable to read cache block [%llx:%x]\n",
++ block, offset);
++ mutex_lock(&msblk->block_cache_mutex);
++ msblk->block_cache[i].block = SQUASHFS_INVALID_BLK;
++ kfree(msblk->block_cache[i].data);
++ wake_up(&msblk->waitq);
++ mutex_unlock(&msblk->block_cache_mutex);
++ goto out;
++ }
++
++ mutex_lock(&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) {
++ mutex_unlock(&msblk->block_cache_mutex);
++ continue;
++ }
++
++ bytes = msblk->block_cache[i].length - offset;
++
++ if (bytes < 1) {
++ mutex_unlock(&msblk->block_cache_mutex);
++ goto out;
++ } else if (bytes >= 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;
++ }
++ mutex_unlock(&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;
++ mutex_unlock(&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)
++{
++ mutex_lock(&msblk->fragment_mutex);
++ fragment->locked --;
++ wake_up(&msblk->fragment_wait_queue);
++ mutex_unlock(&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;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ while ( 1 ) {
++ mutex_lock(&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);
++ mutex_unlock(&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");
++ mutex_unlock(&msblk->fragment_mutex);
++ goto out;
++ }
++
++ msblk->fragment[i].block = SQUASHFS_INVALID_BLK;
++ msblk->fragment[i].locked = 1;
++ mutex_unlock(&msblk->fragment_mutex);
++
++ if (!(msblk->fragment[i].length = squashfs_read_data(s,
++ msblk->fragment[i].data,
++ start_block, length, NULL, sblk->block_size))) {
++ ERROR("Unable to read fragment cache block "
++ "[%llx]\n", start_block);
++ msblk->fragment[i].locked = 0;
++ smp_mb();
++ goto out;
++ }
++
++ mutex_lock(&msblk->fragment_mutex);
++ 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);
++ mutex_unlock(&msblk->fragment_mutex);
++ break;
++ }
++
++ msblk->fragment[i].locked++;
++ mutex_unlock(&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 void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
++ struct squashfs_base_inode_header *inodeb)
++{
++ 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];
++}
++
++
++static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)];
++ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1);
++ squashfs_inode_t inode;
++
++ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino);
++
++ if (msblk->swap) {
++ squashfs_inode_t sinode;
++
++ if (!squashfs_get_cached_block(s, (char *) &sinode, start, offset,
++ sizeof(sinode), &start, &offset))
++ goto out;
++ SQUASHFS_SWAP_INODE_T((&inode), &sinode);
++ } else if (!squashfs_get_cached_block(s, (char *) &inode, start, offset,
++ sizeof(inode), &start, &offset))
++ goto out;
++
++ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode);
++
++ return inode;
++
++out:
++ return SQUASHFS_INVALID_BLK;
++}
++
++
++static void vfs_read_inode(struct inode *i)
++{
++ struct squashfs_sb_info *msblk = i->i_sb->s_fs_info;
++ squashfs_inode_t inode = squashfs_inode_lookup(i->i_sb, i->i_ino);
++
++ TRACE("Entered vfs_read_inode\n");
++
++ if(inode != SQUASHFS_INVALID_BLK)
++ (msblk->read_inode)(i, inode);
++}
++
++
++static struct dentry *squashfs_get_parent(struct dentry *child)
++{
++ struct inode *i = child->d_inode;
++ struct inode *parent = iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode);
++ struct dentry *rv;
++
++ TRACE("Entered squashfs_get_parent\n");
++
++ if(parent == NULL) {
++ rv = ERR_PTR(-EACCES);
++ goto out;
++ }
++
++ rv = d_alloc_anon(parent);
++ if(rv == NULL)
++ rv = ERR_PTR(-ENOMEM);
++
++out:
++ return rv;
++}
++
++
++SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct inode *i = iget_locked(s, inode_number);
++
++ TRACE("Entered squashfs_iget\n");
++
++ if(i && (i->i_state & I_NEW)) {
++ (msblk->read_inode)(i, inode);
++ unlock_new_inode(i);
++ }
++
++ return i;
++}
++
++
++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode)
++{
++ struct super_block *s = i->i_sb;
++ 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_read_inode\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;
++
++ squashfs_new_inode(msblk, i, inodeb);
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++ }
++
++ return 1;
++
++failed_read:
++ ERROR("Unable to read inode [%llx:%x]\n", block, offset);
++
++failed_read1:
++ make_bad_inode(i);
++ return 0;
++}
++
++
++static int read_inode_lookup_table(struct super_block *s)
++{
++ struct squashfs_sb_info *msblk = s->s_fs_info;
++ struct squashfs_super_block *sblk = &msblk->sblk;
++ unsigned int length = SQUASHFS_LOOKUP_BLOCK_BYTES(sblk->inodes);
++
++ TRACE("In read_inode_lookup_table, length %d\n", length);
++
++ /* Allocate inode lookup table */
++ if (!(msblk->inode_lookup_table = kmalloc(length, GFP_KERNEL))) {
++ ERROR("Failed to allocate inode lookup table\n");
++ return 0;
++ }
++
++ if (!squashfs_read_data(s, (char *) msblk->inode_lookup_table,
++ sblk->lookup_table_start, length |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
++ ERROR("unable to read inode lookup table\n");
++ return 0;
++ }
++
++ if (msblk->swap) {
++ int i;
++ long long block;
++
++ for (i = 0; i < SQUASHFS_LOOKUP_BLOCKS(sblk->inodes); i++) {
++ SQUASHFS_SWAP_LOOKUP_BLOCKS((&block),
++ &msblk->inode_lookup_table[i], 1);
++ msblk->inode_lookup_table[i] = block;
++ }
++ }
++
++ return 1;
++}
++
++
++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;
++ unsigned int length = SQUASHFS_FRAGMENT_INDEX_BYTES(sblk->fragments);
++
++ if(length == 0)
++ return 1;
++
++ /* Allocate fragment index table */
++ if (!(msblk->fragment_index = kmalloc(length, GFP_KERNEL))) {
++ ERROR("Failed to allocate fragment index table\n");
++ return 0;
++ }
++
++ if (!squashfs_read_data(s, (char *) msblk->fragment_index,
++ sblk->fragment_table_start, length |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length)) {
++ 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->read_inode = squashfs_read_inode;
++ 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);
++
++ mutex_init(&msblk->read_data_mutex);
++ mutex_init(&msblk->read_page_mutex);
++ mutex_init(&msblk->block_cache_mutex);
++ mutex_init(&msblk->fragment_mutex);
++ mutex_init(&msblk->meta_index_mutex);
++
++ init_waitqueue_head(&msblk->waitq);
++ init_waitqueue_head(&msblk->fragment_wait_queue);
++
++ sblk->bytes_used = sizeof(struct squashfs_super_block);
++ if (!squashfs_read_data(s, (char *) sblk, SQUASHFS_START,
++ sizeof(struct squashfs_super_block) |
++ SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, sizeof(struct squashfs_super_block))) {
++ 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;
++
++ /* Check the filesystem does not extend beyond the end of the
++ block device */
++ if(sblk->bytes_used < 0 || sblk->bytes_used > i_size_read(s->s_bdev->bd_inode))
++ goto failed_mount;
++
++ /* Check the root inode for sanity */
++ if (SQUASHFS_INODE_OFFSET(sblk->root_inode) > SQUASHFS_METADATA_SIZE)
++ 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_super_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_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, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
++ 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, (sblk->no_uids + sblk->no_guids) * sizeof(unsigned int))) {
++ 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 and read fragment index table */
++ if (msblk->read_fragment_index_table(s) == 0)
++ goto failed_mount;
++
++ if(sblk->s_major < 3 || sblk->lookup_table_start == SQUASHFS_INVALID_BLK)
++ goto allocate_root;
++
++ /* Allocate and read inode lookup table */
++ if (read_inode_lookup_table(s) == 0)
++ goto failed_mount;
++
++ s->s_op = &squashfs_export_super_ops;
++ s->s_export_op = &squashfs_export_ops;
++
++allocate_root:
++ root = new_inode(s);
++ if ((msblk->read_inode)(root, sblk->root_inode) == 0)
++ goto failed_mount;
++ insert_inode_hash(root);
++
++ 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->inode_lookup_table);
++ kfree(msblk->fragment_index);
++ kfree(msblk->fragment);
++ kfree(msblk->uid);
++ kfree(msblk->read_page);
++ 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);
++ flush_dcache_page(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;
++
++ mutex_lock(&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:
++ mutex_unlock(&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;
++
++ mutex_lock(&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:
++ mutex_unlock(&msblk->meta_index_mutex);
++ return meta;
++}
++
++
++void release_meta_index(struct inode *inode, struct meta_index *meta)
++{
++ meta->locked = 0;
++ smp_mb();
++}
++
++
++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 {
++ if(meta->entries == 0)
++ goto failed;
++ 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;
++
++ mutex_lock(&msblk->read_page_mutex);
++
++ if (!(bytes = squashfs_read_data(inode->i_sb, msblk->read_page,
++ block, bsize, NULL, sblk->block_size))) {
++ ERROR("Unable to read page, block %llx, size %x\n", block,
++ bsize);
++ mutex_unlock(&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 avail = (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, avail);
++
++ push_page = (i == page->index) ? page :
++ grab_cache_page_nowait(page->mapping, i);
++
++ if (!push_page)
++ continue;
++
++ if (PageUptodate(push_page))
++ goto skip_page;
++
++ pageaddr = kmap_atomic(push_page, KM_USER0);
++ memcpy(pageaddr, data_ptr + byte_offset, avail);
++ memset(pageaddr + avail, 0, PAGE_CACHE_SIZE - avail);
++ kunmap_atomic(pageaddr, KM_USER0);
++ flush_dcache_page(push_page);
++ SetPageUptodate(push_page);
++skip_page:
++ unlock_page(push_page);
++ if(i != page->index)
++ 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))
++ mutex_unlock(&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)) {
++ block_list = NULL;
++ goto skip_read;
++ }
++
++ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) {
++ ERROR("Failed to allocate block_list\n");
++ 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);
++ if(block == 0)
++ goto skip_read;
++
++ mutex_lock(&msblk->read_page_mutex);
++ bytes = squashfs_read_data(inode->i_sb, msblk->read_page, block,
++ bsize, NULL, sblk->block_size);
++ if (bytes) {
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, msblk->read_page, bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ } else
++ ERROR("Unable to read page, block %llx, size %x\n",
++ block, bsize);
++ mutex_unlock(&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);
++ if (fragment) {
++ bytes = i_size_read(inode) & (sblk->block_size - 1);
++ pageaddr = kmap_atomic(page, KM_USER0);
++ memcpy(pageaddr, fragment->data + SQUASHFS_I(inode)->
++ u.s1.fragment_offset, bytes);
++ kunmap_atomic(pageaddr, KM_USER0);
++ 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:
++ 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 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);
++ kfree(dire);
++ 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_lookup;
++ }
++
++ if (len > SQUASHFS_NAME_LEN)
++ goto exit_lookup;
++
++ 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_lookup;
++
++ 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 = squashfs_iget(i->i_sb, ino, dirh.inode_number + dire->inode_number);
++
++ goto exit_lookup;
++ }
++ }
++ }
++
++exit_lookup:
++ kfree(dire);
++ if (inode)
++ return d_splice_alias(inode, dentry);
++ 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_lookup;
++}
++
++
++static int squashfs_remount(struct super_block *s, int *flags, char *data)
++{
++ *flags |= MS_RDONLY;
++ return 0;
++}
++
++
++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_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.2-r2 (2007/01/15) "
++ "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 struct kmem_cache * 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, struct kmem_cache * 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 3.2-r2, a compressed read-only filesystem");
++MODULE_AUTHOR("Phillip Lougher <phillip@lougher.org.uk>");
++MODULE_LICENSE("GPL");
+--- /dev/null
++++ linux-2.6.24-rc1/fs/squashfs/Makefile
+@@ -0,0 +1,7 @@
++#
++# Makefile for the linux squashfs routines.
++#
++
++obj-$(CONFIG_SQUASHFS) += squashfs.o
++squashfs-y += inode.o
++squashfs-y += squashfs2_0.o
+--- /dev/null
++++ linux-2.6.24-rc1/fs/squashfs/squashfs2_0.c
+@@ -0,0 +1,742 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.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, SQUASHFS_FRAGMENT_INDEX_BYTES_2(sblk->fragments))) {
++ 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 void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i,
++ struct squashfs_base_inode_header_2 *inodeb, unsigned int ino)
++{
++ struct squashfs_super_block *sblk = &msblk->sblk;
++
++ 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];
++}
++
++
++static int squashfs_read_inode_2(struct inode *i, squashfs_inode_t inode)
++{
++ struct super_block *s = i->i_sb;
++ 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 = i->i_ino;
++ 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;
++
++ squashfs_new_inode(msblk, i, inodeb, ino);
++
++ 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 = 0;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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;
++
++ 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: {
++
++ 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;
++ }
++
++ return 1;
++
++failed_read:
++ ERROR("Unable to read inode [%x:%x]\n", block, offset);
++
++failed_read1:
++ 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_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);
++ unsigned int inode_number = SQUASHFS_MK_VFS_INODE(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 = squashfs_iget(i->i_sb, ino, inode_number);
++
++ 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->read_inode = squashfs_read_inode_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;
++}
+--- /dev/null
++++ linux-2.6.24-rc1/fs/squashfs/squashfs.h
+@@ -0,0 +1,87 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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, int srclength);
++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 inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number);
++extern const struct address_space_operations squashfs_symlink_aops;
++extern const struct address_space_operations squashfs_aops;
++extern const 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
+--- /dev/null
++++ linux-2.6.24-rc1/include/linux/squashfs_fs.h
+@@ -0,0 +1,934 @@
++#ifndef SQUASHFS_FS
++#define SQUASHFS_FS
++
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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_EXPORT 7
++
++#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_EXPORTABLE(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_EXPORT)
++
++#define SQUASHFS_CHECK_DATA(flags) SQUASHFS_BIT(flags, \
++ SQUASHFS_CHECK)
++
++#define SQUASHFS_MKFLAGS(noi, nod, check_data, nof, no_frag, always_frag, \
++ duplicate_checking, exortable) (noi | (nod << 1) | (check_data << 2) \
++ | (nof << 3) | (no_frag << 4) | (always_frag << 5) | \
++ (duplicate_checking << 6) | (exportable << 7))
++
++/* 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))
++
++/* inode lookup table defines */
++#define SQUASHFS_LOOKUP_BYTES(A) ((A) * sizeof(squashfs_inode_t))
++
++#define SQUASHFS_LOOKUP_BLOCK(A) (SQUASHFS_LOOKUP_BYTES(A) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCK_OFFSET(A) (SQUASHFS_LOOKUP_BYTES(A) % \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCKS(A) ((SQUASHFS_LOOKUP_BYTES(A) + \
++ SQUASHFS_METADATA_SIZE - 1) / \
++ SQUASHFS_METADATA_SIZE)
++
++#define SQUASHFS_LOOKUP_BLOCK_BYTES(A) (SQUASHFS_LOOKUP_BLOCKS(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 lookup_table_start;
++} __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 pending;
++} __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)->lookup_table_start, 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_INODE_T(s, d) SQUASHFS_SWAP_LONG_LONGS(s, d, 1)
++
++#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)
++#define SQUASHFS_SWAP_LOOKUP_BLOCKS(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
+--- /dev/null
++++ linux-2.6.24-rc1/include/linux/squashfs_fs_i.h
+@@ -0,0 +1,45 @@
++#ifndef SQUASHFS_FS_I
++#define SQUASHFS_FS_I
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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
+--- /dev/null
++++ linux-2.6.24-rc1/include/linux/squashfs_fs_sb.h
+@@ -0,0 +1,74 @@
++#ifndef SQUASHFS_FS_SB
++#define SQUASHFS_FS_SB
++/*
++ * Squashfs
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * 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;
++ char *read_page;
++ struct mutex read_data_mutex;
++ struct mutex read_page_mutex;
++ struct mutex block_cache_mutex;
++ struct mutex fragment_mutex;
++ struct mutex meta_index_mutex;
++ wait_queue_head_t waitq;
++ wait_queue_head_t fragment_wait_queue;
++ struct meta_index *meta_index;
++ z_stream stream;
++ long long *inode_lookup_table;
++ int (*read_inode)(struct inode *i, 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
+--- linux-2.6.24-rc1.orig/init/do_mounts_rd.c
++++ linux-2.6.24-rc1/init/do_mounts_rd.c
+@@ -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,18 @@
+ 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-rp-2.6.23+2.6.24-rc0+git/uvesafb-0.1-rc3-2.6.22.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/uvesafb-0.1-rc3-2.6.22.patch
index 711375114f..711375114f 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/uvesafb-0.1-rc3-2.6.22.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/uvesafb-0.1-rc3-2.6.22.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/versatile-armv6.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/versatile-armv6.patch
new file mode 100644
index 0000000000..e2d0060ac3
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/versatile-armv6.patch
@@ -0,0 +1,19 @@
+---
+ arch/arm/mm/Kconfig | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.23.orig/arch/arm/mm/Kconfig
++++ linux-2.6.23/arch/arm/mm/Kconfig
+@@ -343,11 +343,11 @@ config CPU_XSC3
+ select IO_36
+
+ # ARMv6
+ config CPU_V6
+ bool "Support ARM V6 processor"
+- depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3
++ depends on ARCH_INTEGRATOR || MACH_REALVIEW_EB || ARCH_OMAP2 || ARCH_MX3 || ARCH_VERSATILE_PB
+ default y if ARCH_MX3
+ select CPU_32v6
+ select CPU_ABRT_EV6
+ select CPU_CACHE_V6
+ select CPU_CACHE_VIPT
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/vt_ioctl_race.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/vt_ioctl_race.patch
index 5a51d1c3f5..5a51d1c3f5 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/vt_ioctl_race.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/vt_ioctl_race.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/w100fb-unused-var.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/w100fb-unused-var.patch
index 8cbbb6bd01..8cbbb6bd01 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/w100fb-unused-var.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/w100fb-unused-var.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/wm97xx-lcdnoise-r0.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/wm97xx-lcdnoise-r0.patch
index 191de3af22..191de3af22 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/wm97xx-lcdnoise-r0.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/wm97xx-lcdnoise-r0.patch
diff --git a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/zylonite-boot.patch b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/zylonite-boot.patch
index f41928eca5..f41928eca5 100644
--- a/packages/linux/linux-rp-2.6.23+2.6.24-rc0+git/zylonite-boot.patch
+++ b/packages/linux/linux-rp-2.6.23+2.6.24-rc6+git/zylonite-boot.patch
diff --git a/packages/linux/linux-rp.inc b/packages/linux/linux-rp.inc
index fb6570e3fd..8f180164e0 100644
--- a/packages/linux/linux-rp.inc
+++ b/packages/linux/linux-rp.inc
@@ -34,8 +34,8 @@ CMDLINE_DEBUG = '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",
##############################################################
# Configure memory/ramdisk split for collie
#
-export mem = '${@bb.data.getVar("COLLIE_MEMORY_SIZE",d,1) or "32"}'
-export rd = '${@bb.data.getVar("COLLIE_RAMDISK_SIZE",d,1) or "32"}'
+export mem = '${@bb.data.getVar("COLLIE_MEMORY_SIZE",d,1) or "64"}'
+export rd = '${@bb.data.getVar("COLLIE_RAMDISK_SIZE",d,1) or "0"}'
CMDLINE_MEM_collie = "mem=${mem}M"
CMDLINE_ROTATE_spitz = "fbcon=rotate:1"
@@ -58,6 +58,7 @@ 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"
+module_autoload_locomo-kbd_collie = "locomo-kbd"
do_configure() {
rm -f ${S}/.config
diff --git a/packages/linux/linux-rp_2.6.23+2.6.24-rc0+git.bb b/packages/linux/linux-rp_2.6.23+2.6.24-rc6+git.bb
index 3260e6750c..48211e54ca 100644
--- a/packages/linux/linux-rp_2.6.23+2.6.24-rc0+git.bb
+++ b/packages/linux/linux-rp_2.6.23+2.6.24-rc6+git.bb
@@ -1,32 +1,33 @@
require linux-rp.inc
-PR = "r2"
+PR = "r4"
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_collie = "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.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
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/linux-2.6.20-rc4.tar.bz2
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.18-rc6.bz2;patch=1
+# ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/snapshots/patch-2.6.18-rc2-git1.bz2;patch=1
+# ${KERNELORG_MIRROR}pub/linux/kernel/people/alan/linux-2.6/2.6.10/patch-2.6.10-ac8.gz;patch=1
+# ${KERNELORG_MIRROR}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.23.tar.bz2 \
- http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.23-git9.bz2;patch=1 \
+SRC_URI = "${KERNELORG_MIRROR}pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
+ ${KERNELORG_MIRROR}pub/linux/kernel/v2.6/testing/patch-2.6.24-rc6.bz2;patch=1 \
${RPSRC}/lzo_crypto-r2.patch;patch=1 \
${RPSRC}/lzo_jffs2_sysfs-r1.patch;patch=1 \
- ${RPSRC}/hx2750_base-r30.patch;patch=1 \
+ file://hx2750_base-r31.patch;patch=1 \
${RPSRC}/hx2750_bl-r9.patch;patch=1 \
${RPSRC}/hx2750_pcmcia-r3.patch;patch=1 \
${RPSRC}/pxa_keys-r8.patch;patch=1 \
- ${RPSRC}/tsc2101-r16.patch;patch=1 \
+# ${RPSRC}/tsc2101-r16.patch;patch=1 \
${RPSRC}/hx2750_test1-r7.patch;patch=1 \
- ${RPSRC}/input_power-r9.patch;patch=1 \
+ ${RPSRC}/input_power-r10.patch;patch=1 \
+ ${RPSRC}/input_power_fix-r0.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 \
@@ -34,14 +35,15 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
${RPSRC}/usb_pxa27x_udc-r7.patch;patch=1 \
${RPSRC}/locomo_kbd_tweak-r1.patch;patch=1 \
${RPSRC}/poodle_pm-r5.patch;patch=1 \
- ${RPSRC}/pxa27x_overlay-r7.patch;patch=1 \
+ file://pxa27x_overlay-r8.patch;patch=1 \
${RPSRC}/w100_extaccel-r1.patch;patch=1 \
${RPSRC}/w100_extmem-r1.patch;patch=1 \
+ ${RPSRC}/export_atags-r1.patch;patch=1 \
+ ${RPSRC}/pxa25x_suspend_fixes-r0.patch;patch=1 \
file://w100fb-unused-var.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-r1.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-r1.patch;patch=1;status=hack \
file://mmcsd_no_scr_check-r2.patch;patch=1 \
@@ -50,10 +52,10 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
${RPSRC}/corgi_rearrange_lcd-r0.patch;patch=1 \
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://uvesafb-0.1-rc3-2.6.22.patch;patch=1;status=external \
-# file://htcuni.patch;patch=1 \
+# file://squashfs3.2-2.6.20-r0.patch;patch=1;status=external \
+# file://htcuni.patch;patch=1 \
file://binutils-buildid-arm.patch;patch=1 \
+ file://versatile-armv6.patch;patch=1 \
file://defconfig-c7x0 \
file://defconfig-hx2000 \
file://defconfig-collie \
@@ -84,17 +86,17 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
# These patches are extracted from Pavel Machek's git tree
# (diff against vanilla kernel)
SRC_URI_append_collie = "\
- ${TKSRC}/${PN}_${PV}/mtd-sharp-flash-hack-r3.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/mcp-sa11x0-r0.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/locomo-r0.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/locomo_spi-4.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/collie-kexec.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/sharpsl_pm-2.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/collie_pm-2.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/locomokeyb_suspendkey-2.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/ucb1x00_suspend.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/collie-ts.patch;patch=1 \
- ${TKSRC}/${PN}_${PV}/pcmcia_suspend.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/mtd-sharp-flash-hack-r3.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/mcp-sa11x0-r0.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/locomo-r0.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/locomo_spi-4.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/collie-kexec.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/sharpsl_pm-2.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/collie_pm-2.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/locomokeyb_suspendkey-2.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/ucb1x00_suspend.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/collie-ts.patch;patch=1 \
+ ${TKSRC}/${PN}_${PV}/pcmcia_suspend.patch;patch=1 \
"
SRC_URI_append_tosa = "\
diff --git a/packages/linux/linux-rp_2.6.23.bb b/packages/linux/linux-rp_2.6.23.bb
index 24a8192b5b..5b9b4f3b6b 100644
--- a/packages/linux/linux-rp_2.6.23.bb
+++ b/packages/linux/linux-rp_2.6.23.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r21"
+PR = "r22"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
diff --git a/packages/linux/linux-storcenter/defconfig-2.6.15.7 b/packages/linux/linux-storcenter/defconfig-2.6.15.7
new file mode 100644
index 0000000000..de5e5b80f7
--- /dev/null
+++ b/packages/linux/linux-storcenter/defconfig-2.6.15.7
@@ -0,0 +1,1176 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.15.7
+# Tue Jan 15 08:24:59 2008
+#
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_PPC=y
+CONFIG_PPC32=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=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=y
+# 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 is not set
+CONFIG_EMBEDDED=y
+# CONFIG_KALLSYMS is not set
+CONFIG_PRINTK=y
+CONFIG_BUG=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_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
+
+#
+# Block layer
+#
+CONFIG_LBD=y
+
+#
+# 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=y
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_POWER3 is not set
+# CONFIG_POWER4 is not set
+# CONFIG_8xx is not set
+# CONFIG_E200 is not set
+# CONFIG_E500 is not set
+CONFIG_PPC_FPU=y
+# CONFIG_ALTIVEC is not set
+# CONFIG_TAU is not set
+# CONFIG_KEXEC is not set
+# 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_MULTIPLATFORM 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 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_IOMEGA8241=y
+# 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_MPC10X_BRIDGE=y
+CONFIG_MPC10X_OPENPIC=y
+# CONFIG_MPC10X_STORE_GATHERING is not set
+# CONFIG_SMP is not set
+# CONFIG_HIGHMEM is not set
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# 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_BINFMT_ELF=y
+CONFIG_BINFMT_MISC=y
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=ttyS0,115200"
+# CONFIG_PM is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_GENERIC_ISA_DMA=y
+# CONFIG_PPC_I8259 is not set
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+# CONFIG_PCI_LEGACY_PROC is not set
+
+#
+# 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_PACKET=m
+# 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 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
+# 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 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
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_FTL=y
+CONFIG_NFTL=y
+CONFIG_NFTL_RW=y
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS 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_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
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0xFF800000
+CONFIG_MTD_PHYSMAP_LEN=0x00800000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=1
+# CONFIG_MTD_PLATRAM is not set
+CONFIG_MTD_IOMEGA8241=y
+
+#
+# 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_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 is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=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_BLK_DEV_IDEPCI=y
+# CONFIG_IDEPCI_SHARE_IRQ is not set
+CONFIG_BLK_DEV_OFFBOARD=y
+# CONFIG_BLK_DEV_GENERIC is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_PCI_AUTO 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_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_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+CONFIG_BLK_DEV_VIA82CXXX=y
+# CONFIG_IDE_ARM is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# 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_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=y
+CONFIG_MD_LINEAR=y
+CONFIG_MD_RAID0=y
+CONFIG_MD_RAID1=y
+CONFIG_MD_RAID10=y
+CONFIG_MD_RAID5=y
+# CONFIG_MD_RAID6 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_FAULTY is not set
+# CONFIG_BLK_DEV_DM 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=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)
+#
+# 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_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
+
+#
+# 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_NR_UARTS=2
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+# CONFIG_SERIAL_8250_SHARE_IRQ is not set
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+# CONFIG_SERIAL_8250_RSA 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_NVRAM is not set
+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
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+CONFIG_8241EMI=y
+
+#
+# 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_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=y
+# 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_M41T00 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
+
+#
+# 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_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 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_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=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=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+# 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 is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_MON is not set
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# SN 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_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_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=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS 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=y
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=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_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=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="utf8"
+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
+
+#
+# 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_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_SERIAL_TEXT_DEBUG=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
diff --git a/packages/linux/linux-storcenter/kernel.patch-2.6.15.7 b/packages/linux/linux-storcenter/kernel.patch-2.6.15.7
new file mode 100644
index 0000000000..030ef64d2a
--- /dev/null
+++ b/packages/linux/linux-storcenter/kernel.patch-2.6.15.7
@@ -0,0 +1,1181 @@
+--- linux-2.6.15.orig/arch/ppc/platforms/iomega8241.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/iomega8241.c 2008-01-07 16:56:45.628534603 -0800
+@@ -0,0 +1,603 @@
++/*
++ * arch/ppc/platforms/iomega8241.c
++ *
++ * The Iomega StorCenter Network Hard Drive platform is based on the
++ * original sandpoint test platform. That GNU copyright information
++ * is reproduced below:
++ *
++ * Board setup routines for the Motorola SPS Sandpoint Test 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.
++ */
++
++/*
++ * Iomega StorCenter Network Hard Drive.
++ *
++ * Maintainer (Iomega Port): Anthony Russello
++ * russello@iomega.com
++ * Much of the below code was taken from the original sandpoint.c/.h port
++ * done my Mark A. Greer (see above copyright information). It was adapted
++ * to support a custom board.
++ */
++
++#include <linux/config.h>
++#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/irq.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_8250.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/open_pic.h>
++#include <asm/todc.h>
++#include <asm/bootinfo.h>
++#include <asm/mpc10x.h>
++#include <asm/pci-bridge.h>
++#include <asm/kgdb.h>
++
++#include "iomega8241.h"
++
++/* Real Time Clock */
++extern spinlock_t rtc_lock;
++extern int ds1337_do_command(int id, int cmd, void *arg);
++#define DS1337_GET_DATE 0
++#define DS1337_SET_DATE 1
++
++unsigned char __res[sizeof(bd_t)];
++
++static void iomega8241_halt(void);
++
++/*
++ * Define all of the IRQ senses and polarities.
++ */
++static u_char iomega8241_openpic_initsenses[] __initdata = {
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 0: AN983B */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 1: IDE VIA DS6410 */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 2: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 3: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 4: USB */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 5: UART0 */
++ (IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE), /* 6: UART1 */
++};
++
++/*
++ * Define all of the PCI IRQ Mappings
++ */
++static inline int
++iomega8241_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
++ */
++ {
++ { 1, 1, 0, 0 },
++ { 2, 3, 4, 1 },
++ { 0, 0, 4, 4 },
++ { 3, 3, 4, 4 },
++ { 3, 3, 4, 4 },
++ };
++
++ const long min_idsel = 13, max_idsel = 17, irqs_per_slot = 4;
++ return PCI_IRQ_TABLE_LOOKUP;
++}
++
++static int
++iomega8241_exclude_device(u_char bus, u_char devfn)
++{
++ if ((bus == 0) && (PCI_SLOT(devfn) == IOMEGA8241_HOST_BRIDGE_IDSEL))
++ return PCIBIOS_DEVICE_NOT_FOUND;
++ else
++ return PCIBIOS_SUCCESSFUL;
++}
++
++static void __init
++iomega8241_find_bridges(void)
++{
++ struct pci_controller *hose;
++
++ hose = pcibios_alloc_controller();
++
++ if (!hose)
++ return;
++
++ hose->first_busno = 0;
++ hose->last_busno = 0x1;
++
++ if (mpc10x_bridge_init(hose,
++ MPC10X_MEM_MAP_B,
++ MPC10X_MEM_MAP_B,
++ MPC10X_MAPB_EUMB_BASE) == 0) {
++
++ ppc_md.pci_exclude_device = iomega8241_exclude_device;
++ hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
++ ppc_md.pcibios_fixup = NULL;
++ ppc_md.pcibios_fixup_bus = NULL;
++ ppc_md.pci_swizzle = common_swizzle;
++ ppc_md.pci_map_irq = iomega8241_map_irq;
++ }
++ else {
++ if (ppc_md.progress)
++ ppc_md.progress("Bridge init failed", 0x100);
++ printk("Host bridge init failed\n");
++ }
++ return;
++}
++
++
++static ulong
++get_bus_frequency(void)
++{
++ bd_t *bp = (bd_t *)__res;
++ ulong freq;
++ if (133333332 == bp->bi_busfreq)
++ freq = 132000000;
++ if (99999999 == bp->bi_busfreq)
++ freq = 100000000;
++ return(freq);
++}
++
++
++static void
++iomega8241_early_serial_map(void)
++{
++#if defined(CONFIG_SERIAL_8250)
++ struct plat_serial8250_port *pdata;
++ bd_t *binfo = (bd_t *) __res;
++
++ pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC10X_UART0);
++ pdata[0].uartclk = get_bus_frequency();
++ pdata[0].membase = (unsigned char __iomem *) IOMEGA8241_SERIAL_0;
++
++ pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC10X_UART1);
++ pdata[0].uartclk = get_bus_frequency();
++ pdata[0].membase = (unsigned char __iomem *) IOMEGA8241_SERIAL_1;
++#endif
++}
++
++static void __init
++iomega8241_setup_arch(void)
++{
++ int i = 0;
++
++ loops_per_jiffy = 100000000 / HZ;
++
++#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 */
++ iomega8241_find_bridges();
++
++ iomega8241_early_serial_map();
++
++ printk(KERN_INFO "Iomega StorCenter Network Hard Drive\n");
++ printk(KERN_INFO "Linux Kernel by Protium Computing\n");
++
++ /* DINK32 12.3 and below do not correctly enable any caches.
++ * We will do this now with good known values. Future versions
++ * of DINK32 are supposed to get this correct.
++ */
++ if (cpu_has_feature(CPU_FTR_SPEC7450))
++ /* 745x is different. We only want to pass along enable. */
++ _set_L2CR(L2CR_L2E);
++ else if (cpu_has_feature(CPU_FTR_L2CR))
++ /* All modules have 1MB of L2. We also assume that an
++ * L2 divisor of 3 will work.
++ */
++ _set_L2CR(L2CR_L2E | L2CR_L2SIZ_1MB | L2CR_L2CLK_DIV3
++ | L2CR_L2RAM_PIPE | L2CR_L2OH_1_0 | L2CR_L2DF);
++#if 0
++ /* Untested right now. */
++ if (cpu_has_feature(CPU_FTR_L3CR)) {
++ /* Magic value. */
++ _set_L3CR(0x8f032000);
++ }
++#endif
++}
++
++#define IOMEGA8241_87308_CFG_ADDR 0x15c
++#define IOMEGA8241_87308_CFG_DATA 0x15d
++
++#define IOMEGA8241_87308_CFG_INB(addr, byte) { \
++ outb((addr), IOMEGA8241_87308_CFG_ADDR); \
++ (byte) = inb(IOMEGA8241_87308_CFG_DATA); \
++}
++
++#define IOMEGA8241_87308_CFG_OUTB(addr, byte) { \
++ outb((addr), IOMEGA8241_87308_CFG_ADDR); \
++ outb((byte), IOMEGA8241_87308_CFG_DATA); \
++}
++
++#define IOMEGA8241_87308_SELECT_DEV(dev_num) { \
++ IOMEGA8241_87308_CFG_OUTB(0x07, (dev_num)); \
++}
++
++#define IOMEGA8241_87308_DEV_ENABLE(dev_num) { \
++ IOMEGA8241_87308_SELECT_DEV(dev_num); \
++ IOMEGA8241_87308_CFG_OUTB(0x30, 0x01); \
++}
++
++static int __init
++iomega8241_request_io(void)
++{
++ request_region(0x00,0x20,"dma1");
++ request_region(0x20,0x20,"pic1");
++ request_region(0x40,0x20,"timer");
++ request_region(0x80,0x10,"dma page reg");
++ request_region(0xa0,0x20,"pic2");
++ request_region(0xc0,0x20,"dma2");
++
++ return 0;
++}
++
++arch_initcall(iomega8241_request_io);
++
++/*
++ * Interrupt setup and service. Interrrupts on the Sandpoint come
++ * from the four PCI slots plus the 8259 in the Winbond Super I/O (SIO).
++ * The 8259 is cascaded from EPIC IRQ0, IRQ1-4 map to PCI slots 1-4,
++ * IDE is on EPIC 7 and 8.
++ */
++static void __init
++iomega8241_init_IRQ(void)
++{
++ OpenPIC_InitSenses = iomega8241_openpic_initsenses;
++ OpenPIC_NumInitSenses = sizeof(iomega8241_openpic_initsenses);
++
++ /*
++ * We need to tell openpic_set_sources where things actually are.
++ * mpc10x_common will set up OpenPIC_Addr at ioremap(EUMB phys base +
++ * EPIC offset (0x40000)); The EPIC IRQ register address map -
++ * Interrupt Source Configuration Registers gives these numbers as
++ * offsets starting at 0x50200, we need to adjust accordingly
++ */
++ mpc10x_set_openpic();
++}
++
++static int
++iomega8241_get_irq(struct pt_regs *regs)
++{
++ int irq;
++
++ irq = openpic_irq();
++ if (irq == OPENPIC_VEC_SPURIOUS)
++ irq = -1;
++
++ return irq;
++}
++
++static u32
++iomega8241_irq_canonicalize(u32 irq)
++{
++ return irq;
++}
++
++static unsigned long __init
++iomega8241_find_end_of_memory(void)
++{
++ bd_t *bp = (bd_t *)__res;
++
++ if (bp->bi_memsize)
++ return bp->bi_memsize;
++
++ return 64*1024*1024;
++}
++
++static void __init
++iomega8241_map_io(void)
++{
++ /* changes suggested by Freescale: */
++ io_block_mapping(0xfc000000, 0xfc000000, 0x04000000, _PAGE_IO);
++}
++
++static void
++iomega8241_restart(char *cmd)
++{
++ local_irq_disable();
++
++ /* Set exception prefix high - to the firmware */
++ _nmask_and_or_msr(0, MSR_IP);
++
++ for(;;); /* Spin until reset happens */
++}
++
++static void
++iomega8241_power_off(void)
++{
++ local_irq_disable();
++ for(;;); /* No way to shut power off with software */
++ /* NOTREACHED */
++}
++
++static void
++iomega8241_halt(void)
++{
++ iomega8241_power_off();
++ /* NOTREACHED */
++}
++
++static int
++iomega8241_show_cpuinfo(struct seq_file *m)
++{
++ seq_printf(m, "vendor\t\t: Iomega Corporation\n");
++ seq_printf(m, "machine\t\t: Iomega StorCenter Network Hard Drive\n");
++
++ return 0;
++}
++
++#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
++/*
++ * IDE support.
++ */
++static int iomega8241_ide_ports_known = 0;
++static unsigned long iomega8241_ide_regbase[MAX_HWIFS];
++static unsigned long iomega8241_ide_ctl_regbase[MAX_HWIFS];
++static unsigned long iomega8241_idedma_regbase;
++
++static void
++iomega8241_ide_probe(void)
++{
++ struct pci_dev *pdev = pci_get_device(PCI_VENDOR_ID_VIA,
++ PCI_DEVICE_ID_VIA_6410, NULL);
++
++ if (pdev) {
++ iomega8241_ide_regbase[0]=pdev->resource[0].start;
++ iomega8241_ide_regbase[1]=pdev->resource[2].start;
++ iomega8241_ide_ctl_regbase[0]=pdev->resource[1].start;
++ iomega8241_ide_ctl_regbase[1]=pdev->resource[3].start;
++ iomega8241_idedma_regbase=pdev->resource[4].start;
++
++ printk("Found: VIA VT6410 based IDE\n");
++ }
++
++ iomega8241_ide_ports_known = 1;
++}
++
++static int
++iomega8241_ide_default_irq(unsigned long base)
++{
++ if (iomega8241_ide_ports_known == 0)
++ iomega8241_ide_probe();
++
++ if (base == iomega8241_ide_regbase[0])
++ return IDE_INTRUPT;
++ else if (base == iomega8241_ide_regbase[1])
++ return IDE_INTRUPT;
++ else
++ return 0;
++}
++
++static unsigned long
++iomega8241_ide_default_io_base(int index)
++{
++ if (iomega8241_ide_ports_known == 0)
++ iomega8241_ide_probe();
++
++ return iomega8241_ide_regbase[index];
++}
++
++static void __init
++iomega8241_ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
++ unsigned long ctrl_port, int *irq)
++{
++ unsigned long reg = data_port;
++ uint alt_status_base;
++ int i;
++
++ for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
++ hw->io_ports[i] = reg++;
++ }
++
++ if (data_port == iomega8241_ide_regbase[0]) {
++ alt_status_base = iomega8241_ide_ctl_regbase[0] + 2;
++ hw->irq = IDE_INTRUPT;
++ } else if (data_port == iomega8241_ide_regbase[1]) {
++ alt_status_base = iomega8241_ide_ctl_regbase[1] + 2;
++ hw->irq = IDE_INTRUPT;
++ } else {
++ alt_status_base = 0;
++ hw->irq = 0;
++ }
++
++ if (ctrl_port) {
++ hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
++ } else {
++ hw->io_ports[IDE_CONTROL_OFFSET] = alt_status_base;
++ }
++
++ if (irq != NULL) {
++ *irq = hw->irq;
++ }
++}
++#endif
++
++/*
++ * Set BAT 3 to map 0xf8000000 to end of physical memory space 1-to-1.
++ */
++static __inline__ void
++iomega8241_set_bat(void)
++{
++ unsigned long bat3u, bat3l;
++
++ __asm__ __volatile__(
++ " lis %0,0xf800\n \
++ ori %1,%0,0x002a\n \
++ ori %0,%0,0x0ffe\n \
++ mtspr 0x21e,%0\n \
++ mtspr 0x21f,%1\n \
++ isync\n \
++ sync "
++ : "=r" (bat3u), "=r" (bat3l));
++}
++
++TODC_ALLOC();
++
++/* Real Time Clock support.
++ * StorCenter has a DS1337 accessed by I2C.
++ */
++static void __init
++iomega8241_calibrate_decr(void)
++{
++ ulong freq = get_bus_frequency() / 4;
++ printk("time_init: decrementer frequency = %lu.%.6lu MHz\n",
++ freq/1000000, freq%1000000);
++ if (freq == 33000000)
++ freq += 332550;
++
++ tb_ticks_per_jiffy = freq / HZ;
++ tb_to_us = mulhwu_scale_factor(freq, 1000000);
++
++ return;
++}
++
++
++static ulong iomega8241_get_rtc_time(void)
++{
++ struct rtc_time tm;
++ int result;
++
++ spin_lock(&rtc_lock);
++ result = ds1337_do_command(0, DS1337_GET_DATE, &tm);
++ spin_unlock(&rtc_lock);
++
++ if (result == 0)
++ result = mktime(tm.tm_year+1900, tm.tm_mon, tm.tm_mday,
++ tm.tm_hour, tm.tm_min, tm.tm_sec);
++
++ return result;
++}
++
++
++static int iomega8241_set_rtc_time(unsigned long nowtime)
++{
++ struct rtc_time tm;
++ int result;
++
++ to_tm(nowtime, &tm);
++ tm.tm_year -= 1900;
++ spin_lock(&rtc_lock);
++ result = ds1337_do_command(0, DS1337_SET_DATE, &tm);
++ spin_unlock(&rtc_lock);
++
++ return result;
++}
++
++
++static void __init
++iomega8241_init2(void)
++{
++ ppc_md.set_rtc_time = iomega8241_set_rtc_time;
++ ppc_md.get_rtc_time = iomega8241_get_rtc_time;
++}
++
++
++void __init
++platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
++ unsigned long r6, unsigned long r7)
++{
++ parse_bootinfo(find_bootinfo());
++
++ /* ASSUMPTION: If both r3 (bd_t pointer) and r6 (cmdline pointer)
++ * are non-zero, then we should use the board info from the bd_t
++ * structure and the cmdline pointed to by r6 instead of the
++ * information from birecs, if any. Otherwise, use the information
++ * from birecs as discovered by the preceeding call to
++ * parse_bootinfo(). This rule should work with both PPCBoot, which
++ * uses a bd_t board info structure, and the kernel boot wrapper,
++ * which uses birecs.
++ */
++ if (r3 && r6) {
++ /* copy board info structure */
++ memcpy( (void *)__res,(void *)(r3+KERNELBASE), sizeof(bd_t) );
++ /* copy command line */
++ *(char *)(r7+KERNELBASE) = 0;
++ strcpy(cmd_line, (char *)(r6+KERNELBASE));
++ }
++
++#ifdef CONFIG_BLK_DEV_INITRD
++ /* take care of initrd if we have one */
++ if (r4) {
++ initrd_start = r4 + KERNELBASE;
++ initrd_end = r5 + KERNELBASE;
++ }
++#endif /* CONFIG_BLK_DEV_INITRD */
++
++ /* Map in board regs, etc. */
++ iomega8241_set_bat();
++
++ isa_io_base = MPC10X_MAPB_ISA_IO_BASE;
++ isa_mem_base = MPC10X_MAPB_ISA_MEM_BASE;
++ pci_dram_offset = MPC10X_MAPB_DRAM_OFFSET;
++ ISA_DMA_THRESHOLD = 0x00ffffff;
++ DMA_MODE_READ = 0x44;
++ DMA_MODE_WRITE = 0x48;
++
++ ppc_md.setup_arch = iomega8241_setup_arch;
++ ppc_md.show_cpuinfo = iomega8241_show_cpuinfo;
++ ppc_md.irq_canonicalize = iomega8241_irq_canonicalize;
++ ppc_md.init_IRQ = iomega8241_init_IRQ;
++ ppc_md.get_irq = iomega8241_get_irq;
++ ppc_md.init = iomega8241_init2;
++
++ ppc_md.restart = iomega8241_restart;
++ ppc_md.power_off = iomega8241_power_off;
++ ppc_md.halt = iomega8241_halt;
++
++ ppc_md.find_end_of_memory = iomega8241_find_end_of_memory;
++ ppc_md.setup_io_mappings = iomega8241_map_io;
++
++ ppc_md.time_init = NULL;
++ ppc_md.set_rtc_time = NULL;
++ ppc_md.get_rtc_time = NULL;
++ ppc_md.calibrate_decr = iomega8241_calibrate_decr;
++
++/*
++ * extra credit:
++ *
++ * ppc_md.nvram_read_val = todc_mc146818_read_val;
++ * ppc_md.nvram_write_val = todc_mc146818_write_val;
++ */
++#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
++ ppc_ide_md.default_irq = iomega8241_ide_default_irq;
++ ppc_ide_md.default_io_base = iomega8241_ide_default_io_base;
++ ppc_ide_md.ide_init_hwif = iomega8241_ide_init_hwif_ports;
++#endif
++
++}
+--- linux-2.6.15.orig/arch/ppc/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/Kconfig 2008-01-01 22:12:32.365126129 -0800
+@@ -649,6 +649,15 @@
+ End of Life: -
+ URL: <http://www.windriver.com/>
+
++config IOMEGA8241
++ bool "IOMEGA8241"
++ ---help---
++ Iomega StorCenter Network Hard Drive
++ Manufacturer: Iomega Corporation
++ Date of Release: May 2005
++ End of Life: -
++ URL: <http://www.iomega.com/>
++
+ config SBS8260
+ bool "SBS8260"
+
+@@ -801,7 +810,7 @@
+ depends on SANDPOINT || SPRUCE || PPLUS || \
+ PRPMC750 || PRPMC800 || LOPEC || \
+ (EV64260 && !SERIAL_MPSC) || CHESTNUT || RADSTONE_PPC7D || \
+- 83xx
++ 83xx || IOMEGA8241
+ default y
+
+ config FORCE
+@@ -870,13 +879,13 @@
+
+ config MPC10X_BRIDGE
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || IOMEGA8241
+ select PPC_INDIRECT_PCI
+ default y
+
+ config MPC10X_OPENPIC
+ bool
+- depends on POWERPMC250 || LOPEC || SANDPOINT
++ depends on POWERPMC250 || LOPEC || SANDPOINT || IOMEGA8241
+ default y
+
+ config MPC10X_STORE_GATHERING
+--- linux-2.6.15.orig/arch/ppc/boot/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/boot/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -13,7 +13,7 @@
+ CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include
+ HOSTCFLAGS += -Iarch/$(ARCH)/boot/include
+
+-BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd
++BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd uImage
+
+ bootdir-y := simple
+ bootdir-$(CONFIG_PPC_OF) += openfirmware
+--- linux-2.6.15.orig/arch/ppc/boot/simple/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/boot/simple/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -158,6 +158,10 @@
+ end-$(CONFIG_SANDPOINT) := sandpoint
+ cacheflag-$(CONFIG_SANDPOINT) := -include $(clear_L2_L3)
+
++ end-$(CONFIG_IOMEGA8241) := iomega8241
++ cacheflag-$(CONFIG_IOMEGA8241) := -include $(clear_L2_L3)
++
++
+ zimage-$(CONFIG_SPRUCE) := zImage-TREE
+ zimageinitrd-$(CONFIG_SPRUCE) := zImage.initrd-TREE
+ end-$(CONFIG_SPRUCE) := spruce
+--- linux-2.6.15.orig/arch/ppc/platforms/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -42,6 +42,7 @@
+ obj-$(CONFIG_RADSTONE_PPC7D) += radstone_ppc7d.o
+ obj-$(CONFIG_SANDPOINT) += sandpoint.o
+ obj-$(CONFIG_SBC82xx) += sbc82xx.o
++obj-$(CONFIG_IOMEGA8241) += iomega8241.o
+ obj-$(CONFIG_SPRUCE) += spruce.o
+ obj-$(CONFIG_LITE5200) += lite5200.o
+ obj-$(CONFIG_EV64360) += ev64360.o
+--- linux-2.6.15.orig/arch/ppc/platforms/iomega8241.h 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/arch/ppc/platforms/iomega8241.h 2008-01-01 22:12:32.365126129 -0800
+@@ -0,0 +1,66 @@
++/*
++ * arch/ppc/platforms/iomega8241.h
++ *
++ * The Iomega StorCenter Network Hard Drive platform is based on the
++ * original sandpoint test platform. That GNU copyright information
++ * is reproduced below:
++ *
++ * Board setup routines for the Motorola SPS Sandpoint Test 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.
++ */
++
++#ifndef __PPC_PLATFORMS_IOMEGA8241_H
++#define __PPC_PLATFORMS_IOMEGA8241_H
++
++#include <asm/ppcboot.h>
++#include <linux/config.h>
++
++/*
++ * G2 Configuration:
++ *
++ * DEVICE IDSEL INTERRUPT NUMBER
++ * AN983B AD12 IRQ0
++ * IDE Via DS6410 AD13 IRQ1
++ * NEC USB uPD720101 AD14 IRQ2,3,4
++ */
++
++#define IDE_INTRUPT 1
++
++/*
++ * The sandpoint boards have processor modules that either have an 8240 or
++ * an MPC107 host bridge on them. These bridges have an IDSEL line that allows
++ * them to respond to PCI transactions as if they were a normal PCI devices.
++ * However, the processor on the processor side of the bridge can not reach
++ * out onto the PCI bus and then select the bridge or bad things will happen
++ * (documented in the 8240 and 107 manuals).
++ * Because of this, we always skip the bridge PCI device when accessing the
++ * PCI bus. The PCI slot that the bridge occupies is defined by the macro
++ * below.
++ */
++#define IOMEGA8241_HOST_BRIDGE_IDSEL 12
++
++void board_find_bridges(void);
++void iomega8241_fix_uart(void);
++/*
++ * Serial defines.
++ */
++#define IOMEGA8241_SERIAL_0 0xFDF04500
++#define IOMEGA8241_SERIAL_1 0xFDF04600
++
++#define RS_TABLE_SIZE 4
++
++/* Rate for the 1.8432 Mhz clock for the onboard serial chip */
++#define BASE_BAUD ( 100000000 / 16 ) /* 100Mhz speed, divided by 16
++ to make the output freqency*/
++#define UART_CLK 1843200
++
++#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST)
++
++#endif /* __PPC_PLATFORMS_IOMEGA8241_H */
+--- linux-2.6.15.orig/arch/ppc/syslib/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/syslib/Makefile 2008-01-01 22:12:32.365126129 -0800
+@@ -71,6 +71,7 @@
+ 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_IOMEGA8241) += pci_auto.o
+ obj-$(CONFIG_SBC82xx) += todc_time.o
+ obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \
+ todc_time.o
+--- linux-2.6.15.orig/arch/ppc/syslib/mpc10x_common.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/arch/ppc/syslib/mpc10x_common.c 2008-01-01 22:12:32.365126129 -0800
+@@ -35,6 +35,10 @@
+ #include <asm/mpc10x.h>
+ #include <asm/ppc_sys.h>
+
++#ifdef CONFIG_IOMEGA8241
++#define NUM_8259_INTERRUPTS 0
++#endif
++
+ #ifdef CONFIG_MPC10X_OPENPIC
+ #ifdef CONFIG_EPIC_SERIAL_MODE
+ #define EPIC_IRQ_BASE (epic_serial_mode ? 16 : 5)
+--- linux-2.6.15.orig/drivers/char/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/Kconfig 2008-01-01 22:12:32.369126358 -0800
+@@ -999,6 +999,25 @@
+ The mmtimer device allows direct userspace access to the
+ Altix system timer.
+
++config 8241EMI
++ tristate "EMI fixes for the 8241 processor"
++ depends on IOMEGA8241
++ default y
++ help
++ By changing the ODCR value from 0xAB to 0x95, we are able to reduce
++ the EMI along the PCI and MEMORY buses.
++
++ msb 7 1 Controls the drive strength of DRV_PCI (40ohm)
++ 6 0 reserved
++ 5-4 01 Controls the drive strength of SDRAM_CLK (40ohm)
++ 3-2 01 Controls the drive strength of PCI_CLK and
++ PCI_CLK_SYNC_OUT (40ohm)
++ 1-0 01 Controls the drive strength of SDRAM_CLK and
++ SDRAM_SYNC_OUT (40ohm)
++
++ See table 4-19 on page 4-22 of the MPC8245 Integrated Processor
++ User's Manual for details on these registers.
++
+ source "drivers/char/tpm/Kconfig"
+
+ config TELCLOCK
+--- linux-2.6.15.orig/drivers/char/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/Makefile 2008-01-01 22:12:32.369126358 -0800
+@@ -48,6 +48,7 @@
+ obj-$(CONFIG_VIOTAPE) += viotape.o
+ obj-$(CONFIG_HVCS) += hvcs.o
+ obj-$(CONFIG_SGI_MBCS) += mbcs.o
++obj-$(CONFIG_8241EMI) += emiregs.o
+
+ obj-$(CONFIG_PRINTER) += lp.o
+ obj-$(CONFIG_TIPAR) += tipar.o
+--- linux-2.6.15.orig/drivers/char/emiregs.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/drivers/char/emiregs.c 2008-01-01 22:12:32.369126358 -0800
+@@ -0,0 +1,68 @@
++#include <linux/init.h>
++#include <linux/module.h>
++
++MODULE_LICENSE ("GPL");
++
++/*
++ The following CONFIG_READ_BYTE and CONFIG_WRITE_BYTE
++ functions were taken from u-boot
++
++ By changing the ODCR value from 0xAB to 0x95, we are able to reduce
++ the EMI along the PCI and MEMORY buses.
++
++ msb 7 1 Controls the drive strength of DRV_PCI (40ohm)
++ 6 0 reserved
++ 5-4 01 Controls the drive strength of SDRAM_CLK (40ohm)
++ 3-2 01 Controls the drive strength of PCI_CLK and
++ PCI_CLK_SYNC_OUT (40ohm)
++ 1-0 01 Controls the drive strength of SDRAM_CLK and
++ SDRAM_SYNC_OUT (40ohm)
++
++ See table 4-19 on page 4-22 of the MPC8245 Integrated Processor
++ User's Manual for details on these registers.
++*/
++#define CONFIG_ADDR 0xfec00000
++#define CONFIG_DATA 0xfee00000
++
++#define CONFIG_READ_BYTE( addr, reg ) \
++ __asm__ ( \
++ " stwbrx %1, 0, %2\n \
++ sync\n \
++ lbz %0, %4(%3)\n \
++ sync " \
++ : "=r" (reg) \
++ : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \
++ "b" (CONFIG_DATA), "n" ((addr) & 3));
++
++#define CONFIG_WRITE_BYTE( addr, data ) \
++ __asm__ __volatile__( \
++ " stwbrx %1, 0, %0\n \
++ sync\n \
++ stb %3, %4(%2)\n \
++ sync " \
++ : /* no output */ \
++ : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \
++ "b" (CONFIG_DATA), "r" (data), \
++ "n" ((addr) & 3));
++
++
++static int emiregs_init (void)
++ {
++ u_long val, val2;
++ CONFIG_READ_BYTE (0x80000073, val);
++ CONFIG_WRITE_BYTE (0x80000073, 0x95);
++ CONFIG_READ_BYTE (0x80000073, val2);
++
++ printk (KERN_INFO "8241 ODCR: changed from 0x%02lx, to 0x%02lx\n", val, val2);
++
++ return 0;
++ }
++
++static void emiregs_exit (void)
++ {
++ printk (KERN_INFO "emiregs module exitting\n");
++ return;
++ }
++
++module_init (emiregs_init);
++module_exit (emiregs_exit);
+--- linux-2.6.15.orig/drivers/char/rtc.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/char/rtc.c 2008-01-01 22:12:32.369126358 -0800
+@@ -514,9 +514,16 @@
+ }
+ case RTC_RD_TIME: /* Read the time/date from RTC */
+ {
++#ifdef CONFIG_IOMEGA8241
++ unsigned long usi_time;
++ usi_time = ds1337_get_time();
++ to_tm(usi_time,wtime);
++ break;
++#else
+ memset(&wtime, 0, sizeof(struct rtc_time));
+ rtc_get_rtc_time(&wtime);
+ break;
++#endif /* CONFIG_IOMEGA8241 */
+ }
+ case RTC_SET_TIME: /* Set the RTC */
+ {
+@@ -558,7 +565,7 @@
+
+ if ((yrs -= epoch) > 255) /* They are unsigned */
+ return -EINVAL;
+-
++#ifndef CONFIG_IOMEGA8241
+ spin_lock_irq(&rtc_lock);
+ #ifdef CONFIG_MACH_DECSTATION
+ real_yrs = yrs;
+@@ -614,6 +621,11 @@
+
+ spin_unlock_irq(&rtc_lock);
+ return 0;
++#else /* CONFIG_IOMEGA8241 */
++ /* next is the forth API provided by ds1337.c USI-SS */
++ ds1337_usi_set_time(yrs,mon,day,hrs,min,sec);
++ break;
++#endif /* CONFIG_IOMEGA8241 */
+ }
+ #ifdef RTC_IRQ
+ case RTC_IRQP_READ: /* Read the periodic IRQ rate. */
+--- linux-2.6.15.orig/drivers/i2c/busses/i2c-mpc.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/i2c/busses/i2c-mpc.c 2008-01-01 22:12:32.369126358 -0800
+@@ -285,7 +285,11 @@
+ .algo = &mpc_algo,
+ .class = I2C_CLASS_HWMON,
+ .timeout = 1,
++#ifdef CONFIG_IOMEGA8241
++ .retries = 400
++#else
+ .retries = 1
++#endif /* CONFIG_IOMEGA8241 */
+ };
+
+ static int fsl_i2c_probe(struct platform_device *pdev)
+--- linux-2.6.15.orig/drivers/ide/pci/via82cxxx.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/ide/pci/via82cxxx.c 2008-01-02 08:21:42.876113109 -0800
+@@ -305,6 +305,12 @@
+ */
+
+ pci_read_config_byte(dev, VIA_IDE_ENABLE, &v);
++#ifdef CONFIG_IOMEGA8241
++ if(via_config->id == PCI_DEVICE_ID_VIA_6410) {
++ pci_write_config_byte(dev, VIA_IDE_ENABLE, v | 0x3);
++ }
++#endif
++
+
+ /*
+ * Set up FIFO sizes and thresholds.
+@@ -485,7 +492,11 @@
+ .channels = 2,
+ .autodma = AUTODMA,
+ .enablebits = {{0x00,0x00,0x00}, {0x00,0x00,0x00}},
++#ifdef CONFIG_IOMEGA8241
++ .bootable = NEVER_BOARD,
++#else
+ .bootable = ON_BOARD,
++#endif
+ }
+ };
+
+--- linux-2.6.15.orig/drivers/mtd/maps/Kconfig 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/Kconfig 2008-01-01 22:12:32.369126358 -0800
+@@ -639,5 +639,10 @@
+
+ This selection automatically selects the map_ram driver.
+
+-endmenu
++config MTD_IOMEGA8241
++ tristate "Map driver for the Iomega 8241 StorCenter board"
++ depends on IOMEGA8241
++ help
++ Map driver for the Iomega StorCenter Network Hard Drive.
+
++endmenu
+--- linux-2.6.15.orig/drivers/mtd/maps/Makefile 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/Makefile 2008-01-01 22:12:32.369126358 -0800
+@@ -68,6 +68,7 @@
+ obj-$(CONFIG_MTD_WRSBC8260) += wr_sbc82xx_flash.o
+ obj-$(CONFIG_MTD_DMV182) += dmv182.o
+ obj-$(CONFIG_MTD_SHARP_SL) += sharpsl-flash.o
++obj-$(CONFIG_MTD_IOMEGA8241) += iomega8241_mtd.o
+ obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
+ obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
+ obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
+--- linux-2.6.15.orig/drivers/mtd/maps/iomega8241_mtd.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.15/drivers/mtd/maps/iomega8241_mtd.c 2008-01-01 22:12:32.369126358 -0800
+@@ -0,0 +1,102 @@
++/*
++ * drivers/mtd/maps/iomega8241_mtd.c
++ *
++ * Iomega Corporation
++ *
++ * Flash mapping for the Iomega StorCenter Network Hard Drive
++ *
++ * This module is based on the mpc1211.c file created by
++ * Saito.K & Jeanne <ksaito@interface.co.jp>
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <asm/io.h>
++#include <linux/mtd/mtd.h>
++#include <linux/mtd/map.h>
++#include <linux/config.h>
++#include <linux/mtd/partitions.h>
++
++#include <asm/immap_cpm2.h>
++
++static struct mtd_info *iomegamtd;
++static struct mtd_partition *parsed_parts;
++
++struct map_info iomega8241_flash_map = {
++ .name = "Flash",
++ .phys = 0xFF800000,
++ .size = 0x800000,
++ .bankwidth = 1,
++};
++
++static struct mtd_partition iomega8241_partitions[] = {
++ {
++ .name = "kernel",
++ /* 1507328 bytes: kernel space */
++ .size = 0x00170000,
++ .offset = 0,
++ }, {
++ .name = "filesystem",
++ /* 5832704 bytes: root partition */
++ .size = 0x00590000,
++ /* start is FF970000 */
++ .offset = MTDPART_OFS_APPEND,
++ }, {
++ .name = "bootloader",
++ /* 262144 bytes for u-boot */
++ .size = 0x00040000,
++ /* start is FFF00000 */
++ .offset = MTDPART_OFS_APPEND,
++ }, {
++ .name = "sysconfig",
++ /* 786432 bytes: sysconf partition */
++ .size = 0x000C0000,
++ /* start is FFF40000 */
++ .offset = MTDPART_OFS_APPEND,
++ }
++};
++
++static int __init
++init_iomega8241_flash(void)
++{
++ int nr_parts;
++
++ iomega8241_flash_map.virt = ioremap(iomega8241_flash_map.phys, iomega8241_flash_map.size);
++
++ simple_map_init(&iomega8241_flash_map);
++
++ printk("Iomega8241: Probing for flash...\n");
++ iomegamtd = do_map_probe("cfi_probe", &iomega8241_flash_map);
++ if (!iomegamtd) {
++ printk(KERN_NOTICE "Flash chips not detected at either possible location.\n");
++ return -ENXIO;
++ }
++ printk("Iomega8241: Flash found at location 0x%x\n", iomega8241_flash_map.phys);
++ iomegamtd->owner = THIS_MODULE;
++
++ parsed_parts = iomega8241_partitions;
++ nr_parts = ARRAY_SIZE(iomega8241_partitions);
++
++ add_mtd_partitions(iomegamtd, parsed_parts, nr_parts);
++ return 0;
++}
++
++static void __exit
++cleanup_iomega8241_flash(void)
++{
++ if (parsed_parts)
++ del_mtd_partitions(iomegamtd);
++ else
++ del_mtd_device(iomegamtd);
++ map_destroy(iomegamtd);
++}
++
++module_init(init_iomega8241_flash);
++module_exit(cleanup_iomega8241_flash);
++
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Anthony Russello <russello@iomega.com>");
++MODULE_DESCRIPTION("Flash mapping for the Iomega StorCenter Network Hard Drive");
+--- linux-2.6.15.orig/drivers/net/wireless/prism54/islpci_dev.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/net/wireless/prism54/islpci_dev.c 2008-01-01 22:12:32.369126358 -0800
+@@ -874,6 +874,7 @@
+
+ /* select the firmware file depending on the device id */
+ switch (pdev->device) {
++ case 0x3873:
+ case 0x3877:
+ strcpy(priv->firmware, ISL3877_IMAGE_FILE);
+ break;
+--- linux-2.6.15.orig/drivers/net/wireless/prism54/islpci_hotplug.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/net/wireless/prism54/islpci_hotplug.c 2008-01-01 22:12:32.373126589 -0800
+@@ -70,6 +70,13 @@
+ PCI_ANY_ID, PCI_ANY_ID,
+ 0, 0, 0
+ },
++ /* Intersil PRISM NetGate 2511 MP PLUS 100mW */
++ {
++ 0x1260, 0x3873,
++ PCI_ANY_ID, PCI_ANY_ID,
++ 0, 0, 0
++ },
++
+
+ /* End of list */
+ {0,0,0,0,0,0,0}
+--- linux-2.6.15.orig/drivers/pci/probe.c 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/drivers/pci/probe.c 2008-01-01 22:12:32.373126589 -0800
+@@ -596,6 +596,20 @@
+ pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
+ class >>= 8; /* upper 3 bytes */
+ dev->class = class;
++#ifdef CONFIG_IOMEGA8241
++ /*
++ * The VIA VT6410 used on the Iomega StorCenter Network Hard Drive reports
++ * with a class of 0x01040 (PCI_CLASS_STORAGE_RAID).
++ *
++ * The following correction allows it to be used as a standard PCI IDE
++ * controller (0x0101)
++ */
++ if((dev->vendor==PCI_VENDOR_ID_VIA)&&(dev->device==PCI_DEVICE_ID_VIA_6410)) {
++ dev->class=0x01018f;
++ printk("PCI: Adjustments for the VIA VT6410 controller have been made\n");
++ }
++#endif /* CONFIG_IOMEGA8241 */
++
+ class >>= 8;
+
+ pr_debug("PCI: Found %s [%04x/%04x] %06x %02x\n", pci_name(dev),
+--- linux-2.6.15.orig/include/asm-ppc/mpc10x.h 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/include/asm-ppc/mpc10x.h 2008-01-01 22:12:32.373126589 -0800
+@@ -76,7 +76,11 @@
+
+ #define MPC10X_MAPB_PCI_INTACK_ADDR 0xfef00000
+ #define MPC10X_MAPB_PCI_IO_START 0x00000000
++#ifdef CONFIG_IOMEGA8241
++#define MPC10X_MAPB_PCI_IO_END 0xFFFF
++#else
+ #define MPC10X_MAPB_PCI_IO_END (0x00c00000 - 1)
++#endif /* CONFIG_IOMEGA8241 */
+ #define MPC10X_MAPB_PCI_MEM_START 0x80000000
+ #define MPC10X_MAPB_PCI_MEM_END (0xc0000000 - 1)
+
+@@ -157,7 +161,12 @@
+ */
+ extern unsigned long ioremap_base;
+ #define MPC10X_MAPA_EUMB_BASE (ioremap_base - MPC10X_EUMB_SIZE)
++
++#ifdef CONFIG_IOMEGA8241
++#define MPC10X_MAPB_EUMB_BASE 0xFDF00000
++#else
+ #define MPC10X_MAPB_EUMB_BASE MPC10X_MAPA_EUMB_BASE
++#endif
+
+ enum ppc_sys_devices {
+ MPC10X_IIC1,
+--- linux-2.6.15.orig/include/asm-ppc/serial.h 2006-01-02 19:21:10.000000000 -0800
++++ linux-2.6.15/include/asm-ppc/serial.h 2008-01-01 22:12:32.373126589 -0800
+@@ -38,6 +38,8 @@
+ #include <asm/mpc85xx.h>
+ #elif defined(CONFIG_RADSTONE_PPC7D)
+ #include <platforms/radstone_ppc7d.h>
++#elif defined(CONFIG_IOMEGA8241)
++#include <platforms/iomega8241.h>
+ #else
+
+ /*
diff --git a/packages/linux/linux-storcenter_2.6.15.7.bb b/packages/linux/linux-storcenter_2.6.15.7.bb
new file mode 100644
index 0000000000..4895b2174e
--- /dev/null
+++ b/packages/linux/linux-storcenter_2.6.15.7.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Linux Kernel for the Iomega storcenter platform"
+SECTION = "kernel"
+LICENSE = "GPL"
+DEPENDS = "u-boot-utils-native"
+PR = "r1"
+
+COMPATIBLE_MACHINE = "storcenter"
+
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://kernel.patch-${PV};patch=1 \
+ file://defconfig-${PV} "
+
+S = "${WORKDIR}/linux-${PV}"
+
+inherit kernel
+
+export ARCH = "ppc"
+
+KERNEL_IMAGETYPE = "uImage"
+KERNEL_OUTPUT = "arch/${ARCH}/boot/images/${KERNEL_IMAGETYPE}"
+
+do_configure() {
+ install -m 644 ${WORKDIR}/defconfig-${PV} ${S}/.config
+ make ARCH=${ARCH} oldconfig
+}
+
+do_deploy() {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 0644 ${KERNEL_OUTPUT} ${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-tornado-omap2/htctornado/defconfig b/packages/linux/linux-tornado-omap2/htctornado/defconfig
index 9be1116739..ec67393992 100644
--- a/packages/linux/linux-tornado-omap2/htctornado/defconfig
+++ b/packages/linux/linux-tornado-omap2/htctornado/defconfig
@@ -259,7 +259,10 @@ 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_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_ARPD is not set
diff --git a/packages/linux/linux-tornado-omap2_2.6.16.16.bb b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
index f76442401f..ccbb4cd867 100644
--- a/packages/linux/linux-tornado-omap2_2.6.16.16.bb
+++ b/packages/linux/linux-tornado-omap2_2.6.16.16.bb
@@ -1,6 +1,7 @@
DESCRIPTION = "Linux kernel for HTC Tornado/Typhoon/Hurricane phones."
SECTION = "kernel"
LICENSE = "GPL"
+PR = "r1"
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 \
diff --git a/packages/linux/linux/simpad/defconfig b/packages/linux/linux/simpad/defconfig
index 33f08a0593..420d531dc4 100644
--- a/packages/linux/linux/simpad/defconfig
+++ b/packages/linux/linux/simpad/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21
-# Sat Jul 7 00:02:55 2007
+# Sat Jan 12 20:06:01 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -227,7 +227,7 @@ CONFIG_ALIGNMENT_TRAP=y
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=""
+CONFIG_CMDLINE=" quiet "
# CONFIG_XIP_KERNEL is not set
# CONFIG_KEXEC is not set
@@ -413,7 +413,12 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
# CONFIG_BT_HCIBLUECARD is not set
# CONFIG_BT_HCIBTUART is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 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
#
@@ -663,34 +668,40 @@ CONFIG_NET_PCI=y
# Wireless LAN (non-hamradio)
#
CONFIG_NET_RADIO=y
-# CONFIG_NET_WIRELESS_RTNETLINK is not set
+CONFIG_NET_WIRELESS_RTNETLINK=y
#
# Obsolete Wireless cards support (pre-802.11)
#
# CONFIG_STRIP is not set
-# CONFIG_ARLAN is not set
+CONFIG_ARLAN=m
# CONFIG_WAVELAN is not set
CONFIG_PCMCIA_WAVELAN=m
-# CONFIG_PCMCIA_NETWAVE is not set
+CONFIG_PCMCIA_NETWAVE=m
#
# Wireless 802.11 Frequency Hopping cards support
#
-# CONFIG_PCMCIA_RAYCS is not set
+CONFIG_PCMCIA_RAYCS=m
#
# Wireless 802.11b ISA/PCI cards support
#
-# CONFIG_HERMES is not set
-# CONFIG_ATMEL is not set
+CONFIG_HERMES=m
+CONFIG_ATMEL=m
#
# 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_PCMCIA_HERMES=m
+CONFIG_PCMCIA_SPECTRUM=m
+CONFIG_AIRO_CS=m
+# CONFIG_PCMCIA_ATMEL is not set
+CONFIG_PCMCIA_WL3501=m
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_CS=m
CONFIG_NET_WIRELESS=y
#
@@ -940,10 +951,7 @@ 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_LOGO is not set
#
# Sound
@@ -986,7 +994,7 @@ CONFIG_USB_ARCH_HAS_HCD=y
#
# MMC/SD Card support
#
-# CONFIG_MMC_SPI_BLOCK is not set
+CONFIG_MMC_SPI_BLOCK=m
# CONFIG_MMC is not set
#
@@ -1247,7 +1255,7 @@ 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_AES=m
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
# CONFIG_CRYPTO_TEA is not set
diff --git a/packages/linux/linux_2.6.21.bb b/packages/linux/linux_2.6.21.bb
index f2ab2116be..265a35a4b3 100644
--- a/packages/linux/linux_2.6.21.bb
+++ b/packages/linux/linux_2.6.21.bb
@@ -4,7 +4,7 @@ DEFAULT_PREFERENCE_at91sam9263ek = "-1"
DEFAULT_PREFERENCE_gumstix-connex = "1"
DEFAULT_PREFERENCE_gumstix-verdex = "1"
-PR = "r11"
+PR = "r12"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://tsc2003.c \
diff --git a/packages/linux/linux_2.6.22.6.bb b/packages/linux/linux_2.6.22.6.bb
index dfe1e2e8b1..69b988e332 100644
--- a/packages/linux/linux_2.6.22.6.bb
+++ b/packages/linux/linux_2.6.22.6.bb
@@ -2,6 +2,7 @@ require linux.inc
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_ts72xx = "1"
+DEFAULT_PREFERENCE_mx31moboard = "1"
PR = "r1"
@@ -25,4 +26,6 @@ SRC_URI_append_ts72xx = "\
file://ts72xx-use-cpld-reset.patch;patch=1 \
"
+SRC_URI_append_mx31moboard = "http://mobots.epfl.ch/mx31moboard/linux-2.6.22-moboard.patch.bz2;patch=1"
+
S = "${WORKDIR}/linux-2.6.22"
diff --git a/packages/linux/linux_2.6.23.bb b/packages/linux/linux_2.6.23.bb
index aaa9e22f47..640e3533bd 100644
--- a/packages/linux/linux_2.6.23.bb
+++ b/packages/linux/linux_2.6.23.bb
@@ -9,19 +9,22 @@ DEFAULT_PREFERENCE_mpc8323e-rdb = "1"
DEPENDS_append_mpc8313e-rdb = " dtc-native"
DEPENDS_append_mpc8323e-rdb = " dtc-native"
-PR = "r9"
+PR = "r10"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2 \
file://binutils-buildid-arm.patch;patch=1 \
+ file://kallsyms-missing-include.patch;patch=1 \
file://defconfig \
"
# Bug fixes on the 2.6.23.x stable branch
-SRC_URI += "http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.23.12.bz2;patch=1"
+SRC_URI += "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/patch-2.6.23.12.bz2;patch=1"
+# Real-time preemption (includes CFS). This is experimental and requires a different defconfig.
+#SRC_URI += "file://patch-2.6.23.12-rt14;patch=1"
+# Only the Completely Fair Scheduler (CFS), the official backport from 2.6.24
+SRC_URI += "http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.6.23.12-v24.1.patch;patch=1"
# Add support for squashfs-lzma (a highly compressed read-only filesystem)
SRC_URI += "http://kamikaze.waninkoko.info/patches/2.6.23/klight1/broken-out/squashfs-lzma-2.6.23.patch;patch=1"
-# Completely fair scheduler
-SRC_URI += "http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.6.23.12-v24.1.patch;patch=1"
SRC_URI_append_cm-x270 = "\
file://0001-cm-x270-base2.patch;patch=1 \
@@ -36,7 +39,9 @@ SRC_URI_append_cm-x270 = "\
SRC_URI_append_mpc8313e-rdb = "\
file://mpc831x-nand.patch;patch=1 \
file://mpc8313e-rdb-leds.patch;patch=1 \
- file://mpc8313e-rdb-rtc.patch;patch=1"
+ file://mpc8313e-rdb-rtc.patch;patch=1 \
+ file://defconfig-rt"
+
SRC_URI_append_mpc8323e-rdb = "\
file://mpc832x-leds.patch;patch=1"
diff --git a/packages/meta/meta-toolchain-gpe-sbox.bb b/packages/meta/meta-toolchain-gpe-sbox.bb
index d32087b964..74ba03825f 100644
--- a/packages/meta/meta-toolchain-gpe-sbox.bb
+++ b/packages/meta/meta-toolchain-gpe-sbox.bb
@@ -9,3 +9,4 @@ TOOLCHAIN_TARGET_TASK = "\
require meta-toolchain.bb
+SDK_SUFFIX = "toolchain-gpe-sbox" \ No newline at end of file
diff --git a/packages/meta/meta-toolchain-gpe.bb b/packages/meta/meta-toolchain-gpe.bb
index f79ff31bb7..cad03d71a6 100644
--- a/packages/meta/meta-toolchain-gpe.bb
+++ b/packages/meta/meta-toolchain-gpe.bb
@@ -7,3 +7,4 @@ TOOLCHAIN_TARGET_TASK = "\
require meta-toolchain.bb
+SDK_SUFFIX = "toolchain-gpe" \ No newline at end of file
diff --git a/packages/meta/meta-toolchain-openmoko.bb b/packages/meta/meta-toolchain-openmoko.bb
index 90eff20259..b7e5626f61 100644
--- a/packages/meta/meta-toolchain-openmoko.bb
+++ b/packages/meta/meta-toolchain-openmoko.bb
@@ -1,4 +1,7 @@
-TOOLCHAIN_TARGET_TASK = "task-toolchain-openmoko-sdk"
+PR = "r1"
-require meta-toolchain.bb
+TOOLCHAIN_TARGET_TASK = "task-openmoko-toolchain-target"
+TOOLCHAIN_HOST_TASK = "task-openmoko-toolchain-host"
+require meta-toolchain.bb
+SDK_SUFFIX = "toolchain-openmoko"
diff --git a/packages/meta/meta-toolchain-sbox.bb b/packages/meta/meta-toolchain-sbox.bb
index 6e31fd0d69..1283c599c6 100644
--- a/packages/meta/meta-toolchain-sbox.bb
+++ b/packages/meta/meta-toolchain-sbox.bb
@@ -4,3 +4,5 @@ TOOLCHAIN_TARGET_TASK = "\
require meta-toolchain.bb
+SDK_SUFFIX = "toolchain-sbox"
+
diff --git a/packages/meta/meta-toolchain.bb b/packages/meta/meta-toolchain.bb
index 91467e5140..923844ef8c 100644
--- a/packages/meta/meta-toolchain.bb
+++ b/packages/meta/meta-toolchain.bb
@@ -1,12 +1,14 @@
DESCRIPTION = "Meta package for building a installable toolchain"
LICENSE = "MIT"
DEPENDS = "ipkg-native ipkg-utils-native fakeroot-native sed-native"
+PR = "r2"
inherit sdk meta
SDK_DIR = "${WORKDIR}/sdk"
SDK_OUTPUT = "${SDK_DIR}/image"
SDK_DEPLOY = "${TMPDIR}/deploy/sdk"
+SDK_SUFFIX = "toolchain"
FEED_ARCH ?= "${TARGET_ARCH}"
@@ -73,10 +75,17 @@ do_populate_sdk() {
for arch in $revipkgarchs; do
pkgnames=${DEPLOY_DIR_IPK}/$arch/${pkg}_*_$arch.ipk
if [ -e $pkgnames ]; then
- echo "Found $pkgnames"
+ oenote "Found $pkgnames"
cp $pkgnames ${SDK_OUTPUT}/${prefix}/ipk/
orig_pkg=`ipkg-list-fields $pkgnames | grep OE: | cut -d ' ' -f2`
- pkg_subdir=$arch${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
+ pkg_subdir_postfix=${TARGET_VENDOR}${@['-' + bb.data.getVar('TARGET_OS', d, 1), ''][bb.data.getVar('TARGET_OS', d, 1) == ('' or 'custom')]}
+ for aarch in $revipkgarchs; do
+ if [ -e "${STAGING_DIR}/pkgdata/${aarch}${pkg_subdir_postfix}/${orig_pkg}" ]; then
+ pkg_subdir="${aarch}${pkg_subdir_postfix}"
+ break
+ fi
+ done
+ oenote "Original package in ${pkg_subdir}"
mkdir -p ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/runtime
cp ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg ${SDK_OUTPUT}/${prefix}/pkgdata/$pkg_subdir/
subpkgs=`cat ${STAGING_DIR}/pkgdata/$pkg_subdir/$orig_pkg | grep PACKAGES: | cut -b 10-`
@@ -120,7 +129,7 @@ do_populate_sdk() {
# package it up
mkdir -p ${SDK_DEPLOY}
cd ${SDK_OUTPUT}
- fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-toolchain.tar.bz2 .
+ fakeroot tar cfj ${SDK_DEPLOY}/${DISTRO}-${DISTRO_VERSION}-${FEED_ARCH}-${TARGET_OS}-${SDK_SUFFIX}.tar.bz2 .
}
do_populate_sdk[nostamp] = "1"
diff --git a/packages/meta/openprotium-packages.bb b/packages/meta/openprotium-packages.bb
index 3df2f5e3b2..7d66ee5d61 100644
--- a/packages/meta/openprotium-packages.bb
+++ b/packages/meta/openprotium-packages.bb
@@ -30,13 +30,14 @@ inherit meta
# flac \
# gphoto2 \
# gdb \
-# glib-2.0 \
# lirc \
# masqmail \
# wakelan \
# wireless-tools \
# wpa-supplicant \
+# openldap \
# bluez-utils-nodbus \
+# lcdproc \
# libxml2 \
# libdvb \
# madwifi-ng \
@@ -53,7 +54,13 @@ inherit meta
# samba \
# sane-backends \
# vsftpd \
+# syslog-ng \
# zd1211 \
+# cdparanoia \
+# litestream \
+# pvrusb2-mci \
+# pwc \
+# fetchmail \
OPENPROTIUM_PACKAGES = "\
alsa-lib \
@@ -70,7 +77,6 @@ OPENPROTIUM_PACKAGES = "\
bridge-utils \
bzip2 \
ccxstream \
- cdparanoia \
cdstatus \
coreutils \
cron \
@@ -85,7 +91,6 @@ OPENPROTIUM_PACKAGES = "\
e2fsprogs-libs \
expat \
ez-ipupdate \
- fetchmail \
file \
findutils \
flex \
@@ -94,6 +99,7 @@ OPENPROTIUM_PACKAGES = "\
gawk \
gcc \
gdbm \
+ glib-2.0 \
gnu-config \
grep \
gtk-doc \
@@ -105,8 +111,6 @@ OPENPROTIUM_PACKAGES = "\
ircp \
joe \
jpeg \
- lcdproc \
- less \
libao \
libid3tag \
liblockfile \
@@ -119,7 +123,6 @@ OPENPROTIUM_PACKAGES = "\
libupnp \
libusb \
libvorbis \
- litestream \
lrzsz \
lsof \
lvm2 \
@@ -144,7 +147,6 @@ OPENPROTIUM_PACKAGES = "\
nmap \
ntp \
openobex-apps \
- openldap \
openntpd \
openobex \
openssh \
@@ -156,8 +158,6 @@ OPENPROTIUM_PACKAGES = "\
pkgconfig \
ppp \
procps \
- pvrusb2-mci \
- pwc \
quilt \
rng-tools \
rsync \
@@ -169,7 +169,6 @@ OPENPROTIUM_PACKAGES = "\
strace \
streamripper \
sysfsutils \
- syslog-ng \
tar \
thttpd \
tiff \
@@ -178,7 +177,6 @@ OPENPROTIUM_PACKAGES = "\
util-linux \
vim \
vlan \
- watchdog \
wget \
zip \
zlib \
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index 3452f4e3bd..667b2b2e69 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -24,7 +24,18 @@ SLUGOS_PACKAGES = "\
apex-env \
apr \
asterisk \
- asterisk-sounds \
+ asterisk-core-sounds-en-alaw \
+ asterisk-core-sounds-en-g729 \
+ asterisk-core-sounds-en-gsm \
+ asterisk-core-sounds-en-ulaw \
+ asterisk-extra-sounds-en-alaw \
+ asterisk-extra-sounds-en-g729 \
+ asterisk-extra-sounds-en-gsm \
+ asterisk-extra-sounds-en-ulaw \
+ asterisk-moh-freeplay-alaw \
+ asterisk-moh-freeplay-g729 \
+ asterisk-moh-freeplay-gsm \
+ asterisk-moh-freeplay-ulaw \
atftp \
audiofile \
aumix \
@@ -137,6 +148,7 @@ SLUGOS_PACKAGES = "\
miau \
microcom \
minicom \
+ monit \
motion \
mpd \
mt-daapd \
@@ -148,9 +160,11 @@ SLUGOS_PACKAGES = "\
ncftp \
ncurses \
net-tools \
+ netatalk \
netcat \
netpbm \
nfs-utils \
+ ngrep \
nmap \
ntfs-3g \
ntp \
@@ -194,9 +208,11 @@ SLUGOS_PACKAGES = "\
sudo \
sysfsutils \
tar \
+ tcpdump \
thttpd \
tiff \
tzdata \
+ unrar \
unzip \
upslug2 \
usbutils \
diff --git a/packages/midpath/midpath-cldc-native_0.1.bb b/packages/midpath/midpath-cldc-native_0.1.bb
index 27700d2e61..30f67854d4 100644
--- a/packages/midpath/midpath-cldc-native_0.1.bb
+++ b/packages/midpath/midpath-cldc-native_0.1.bb
@@ -4,9 +4,6 @@ inherit native
require midpath-cldc_${PV}.bb
-PROVIDES = "virtual/cldc-api-1.1-native"
-RPROVIDES = " "
-
PACKAGES = " "
do_install() {
diff --git a/packages/midpath/midpath-cldc-x11_0.1.bb b/packages/midpath/midpath-cldc-x11_0.1.bb
index 9db0c4a686..7c92621c36 100644
--- a/packages/midpath/midpath-cldc-x11_0.1.bb
+++ b/packages/midpath/midpath-cldc-x11_0.1.bb
@@ -1,7 +1,7 @@
require midpath.inc
-DEPENDS += " virtual/libx11 virtual/cldc-api-1.1"
+DEPENDS += "virtual/libx11 midpath-cldc"
do_configure() {
diff --git a/packages/midpath/midpath-cldc_0.1.bb b/packages/midpath/midpath-cldc_0.1.bb
index 51a1314467..7aeefa5264 100644
--- a/packages/midpath/midpath-cldc_0.1.bb
+++ b/packages/midpath/midpath-cldc_0.1.bb
@@ -1,9 +1,6 @@
require midpath.inc
-PROVIDES = "virtual/cldc-api-1.1"
-RPROVIDES = "virtual/cldc-api-1.1"
-
do_compile() {
mkdir -p ${S}/dist
@@ -18,21 +15,21 @@ cd ${S}/src/cldc-glue
make JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -sourcepath ${S}/src/cldc-glue -source 1.3 -target 1.1"
make install JAVAC=${JAVAC_CMD} JAVAC_FLAGS="-bootclasspath ${S}/external/cldc1.1/classes -source 1.3 -target 1.1" CLASS_DIR=${S}/external/cldc1.1/classes
# Make a jar
-${FASTJAR_CMD} cvf ${S}/dist/cldc1.1.jar -C ${S}/external/cldc1.1/classes .
+${FASTJAR_CMD} cvf ${S}/dist/midpath-cldc1.1.jar -C ${S}/external/cldc1.1/classes .
}
do_install() {
- install -d ${D}${datadir}/java
- install -m 0644 dist/cldc1.1.jar ${D}${datadir}/java
+ install -d ${D}${datadir}/midpath-cldc
+ install -m 0644 dist/midpath-cldc1.1.jar ${D}${datadir}/midpath-cldc
}
do_stage() {
- install -d ${STAGING_DATADIR}/java
- install -m 0644 dist/cldc1.1.jar ${STAGING_DATADIR}/java
+ install -d ${STAGING_DATADIR}/midpath-cldc
+ install -m 0644 dist/midpath-cldc1.1.jar ${STAGING_DATADIR}/midpath-cldc
}
PACKAGES = "${PN}"
-FILES_${PN} = "${datadir}/java/cldc1.1.jar"
+FILES_${PN} = "${datadir}/midpath-cldc/midpath-cldc1.1.jar"
diff --git a/packages/midpath/midpath.inc b/packages/midpath/midpath.inc
index 33793bffd0..4bc3b71598 100644
--- a/packages/midpath/midpath.inc
+++ b/packages/midpath/midpath.inc
@@ -9,14 +9,14 @@ SRC_URI = "http://downloads.sourceforge.net/midpath/midpath-${PV}.tar.gz"
S = "${WORKDIR}/midpath-${PV}"
-DEPENDS = "ecj-native fastjar-native classpath-minimal"
+DEPENDS = "virtual/javac-native fastjar-native classpath"
-JAVAC_CMD = "${STAGING_BINDIR_NATIVE}/ecj"
+JAVAC_CMD = "${STAGING_BINDIR_NATIVE}/javac"
FASTJAR_CMD = "${STAGING_BINDIR_NATIVE}/fastjar"
JAVA_PATH = "${STAGING_DATADIR}/java"
-GNU_CLASSPATH_PATH = "${JAVA_PATH}/classpath-minimal/glibj.zip"
+GNU_CLASSPATH_PATH = "${JAVA_PATH}/classpath/glibj.zip"
-CLDC_PATH = ${JAVA_PATH}/cldc1.1.jar
+CLDC_PATH = ${STAGING_DATADIR}/midpath-cldc/midpath-cldc1.1.jar
diff --git a/packages/monit/.mtn2git_empty b/packages/monit/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/monit/.mtn2git_empty
diff --git a/packages/monit/files/.mtn2git_empty b/packages/monit/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/monit/files/.mtn2git_empty
diff --git a/packages/monit/files/init b/packages/monit/files/init
new file mode 100644
index 0000000000..325a552b28
--- /dev/null
+++ b/packages/monit/files/init
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/monit and type
+# > update-rc.d monit defaults 99
+#
+monit=/usr/bin/monit
+pidfile=/var/run/monit.pid
+monit_args="-c /etc/monitrc"
+
+test -x "$monit" || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting Monit"
+ start-stop-daemon --start --quiet --exec $monit -- $monit_args
+ RETVAL=$?
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping Monit"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ RETVAL=$?
+ echo "."
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ RETVAL=$?
+ ;;
+ status)
+ $monit $monit_args status
+ RETVAL=$?
+ echo "."
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+exit $RETVAL
+
diff --git a/packages/monit/monit-4.10.1/.mtn2git_empty b/packages/monit/monit-4.10.1/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/monit/monit-4.10.1/.mtn2git_empty
diff --git a/packages/monit/monit-4.10.1/init b/packages/monit/monit-4.10.1/init
new file mode 100644
index 0000000000..325a552b28
--- /dev/null
+++ b/packages/monit/monit-4.10.1/init
@@ -0,0 +1,42 @@
+#! /bin/sh
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/monit and type
+# > update-rc.d monit defaults 99
+#
+monit=/usr/bin/monit
+pidfile=/var/run/monit.pid
+monit_args="-c /etc/monitrc"
+
+test -x "$monit" || exit 0
+
+case "$1" in
+ start)
+ echo -n "Starting Monit"
+ start-stop-daemon --start --quiet --exec $monit -- $monit_args
+ RETVAL=$?
+ echo "."
+ ;;
+ stop)
+ echo -n "Stopping Monit"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ RETVAL=$?
+ echo "."
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ RETVAL=$?
+ ;;
+ status)
+ $monit $monit_args status
+ RETVAL=$?
+ echo "."
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+exit $RETVAL
+
diff --git a/packages/monit/monit_4.10.1.bb b/packages/monit/monit_4.10.1.bb
new file mode 100644
index 0000000000..bb18491c5d
--- /dev/null
+++ b/packages/monit/monit_4.10.1.bb
@@ -0,0 +1,24 @@
+LICENSE = "GPL"
+DEPENDS = "openssl"
+
+SRC_URI = "http://www.tildeslash.com/monit/dist/monit-${PV}.tar.gz\
+ file://init"
+
+INITSCRIPT_NAME = "monit"
+INITSCRIPT_PARAMS = "defaults 99"
+
+inherit autotools update-rc.d
+
+EXTRA_OECONF = "--with-ssl-lib-dir=${STAGING_LIBDIR} --with-ssl-incl-dir=${STAGING_INCDIR}"
+
+do_install_append() {
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/monit
+ sed -i 's:# set daemon 120:set daemon 120:' ${S}/monitrc
+ sed -i 's:include /etc/monit.d/:include /${sysconfdir}/monit.d/:' ${S}/monitrc
+ install -m 600 ${S}/monitrc ${D}${sysconfdir}/monitrc
+ install -m 700 -d ${D}${sysconfdir}/monit.d/
+}
+
+CONFFILES_${PN} += "${sysconfdir}/monitrc"
+
diff --git a/packages/musicbrainz/libmusicbrainz_2.1.5.bb b/packages/musicbrainz/libmusicbrainz_2.1.5.bb
new file mode 100644
index 0000000000..7ab0997218
--- /dev/null
+++ b/packages/musicbrainz/libmusicbrainz_2.1.5.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "The MusicBrainz client is a library which can be built into other programs. \
+It allows you to access the data held on the MusicBrainz server."
+HOMEPAGE = "http://musicbrainz.org"
+LICENSE = "LGPL"
+DEPENDS = "expat"
+
+SRC_URI = "http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/musicbrainz/libmusicbrainz_3.0.1.bb b/packages/musicbrainz/libmusicbrainz_3.0.1.bb
index 51717f052d..e01695eb3d 100644
--- a/packages/musicbrainz/libmusicbrainz_3.0.1.bb
+++ b/packages/musicbrainz/libmusicbrainz_3.0.1.bb
@@ -4,11 +4,11 @@ DESCRIPTION = "The MusicBrainz client is a library which can be built into other
It allows you to access the data held on the MusicBrainz server."
HOMEPAGE = "http://musicbrainz.org"
LICENSE = "LGPL"
-DEPENDS = "expat"
+DEPENDS = "expat neon"
SRC_URI = "http://ftp.musicbrainz.org/pub/musicbrainz/libmusicbrainz-${PV}.tar.gz"
-inherit autotools pkgconfig
+inherit cmake pkgconfig
do_stage() {
autotools_stage_all
diff --git a/packages/navit/files/compile-fix.patch b/packages/navit/files/compile-fix.patch
deleted file mode 100644
index 86274d8aa8..0000000000
--- a/packages/navit/files/compile-fix.patch
+++ /dev/null
@@ -1,8 +0,0 @@
-diff -Naur navit-0.0.1.old/src/fib-1.1/Makefile.am navit-0.0.1/src/fib-1.1/Makefile.am
---- navit-0.0.1.old/src/fib-1.1/Makefile.am 2007-07-05 19:16:20.000000000 +0200
-+++ navit-0.0.1/src/fib-1.1/Makefile.am 2007-09-18 00:48:08.000000000 +0200
-@@ -1,4 +1,3 @@
- noinst_LTLIBRARIES = libfib.la
- libfib_la_SOURCES = fib.c fib.h fibpriv.h
--libfib_la_LDFLAGS = -static
- EXTRA_DIST=README configure.in fh_extractmin.3 fh_makeheap.3 fh_makekeyheap.3 fibtest.c fibtest2.c tt.c use.c
diff --git a/packages/navit/navit.inc b/packages/navit/navit.inc
index 1d68027e17..06e3a72664 100644
--- a/packages/navit/navit.inc
+++ b/packages/navit/navit.inc
@@ -5,21 +5,23 @@ RRECOMMENDS = "gpsd speechd flite"
inherit autotools
+EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap --enable-avoid-float --enable-avoid-unaligned"
+
PACKAGES = "${PN}-dbg ${PN}-dev ${PN} ${PN}-doc ${PN}-locale"
FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
FILES_${PN}-dev += "${libdir}/${PN}/*/*.so"
SRC_URI_append = " \
- file://navit.launcher \
+ file://navit.xml-so.patch;patch=1 \
+ file://navit.desktop \
+ file://navit.launcher \
"
do_install_append() {
- install -d ${D}/usr/share/applications/
-
- install -m 0644 ${WORKDIR}/navit.desktop ${D}/usr/share/applications/
-
- mv ${D}/usr/bin/navit ${D}/usr/bin/navit.real
-
- install -m 0755 ${WORKDIR}/navit.launcher ${D}/usr/bin/navit
+ install -d ${D}/usr/share/applications/
+ install -m 0644 ${WORKDIR}/navit.desktop ${D}/usr/share/applications/
+
+ mv ${D}/usr/bin/navit ${D}/usr/bin/navit.real
+ install -m 0755 ${WORKDIR}/navit.launcher ${D}/usr/bin/navit
}
diff --git a/packages/navit/navit_0.0.1.bb b/packages/navit/navit_0.0.1.bb
deleted file mode 100644
index f96a04ec16..0000000000
--- a/packages/navit/navit_0.0.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-require navit.inc
-
-PR = "r3"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
- file://compile-fix.patch;patch=1"
-
-EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
diff --git a/packages/navit/navit_0.0.2.bb b/packages/navit/navit_0.0.2.bb
deleted file mode 100644
index 794f901db5..0000000000
--- a/packages/navit/navit_0.0.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require navit.inc
-
-PR = "r2"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz"
-
-EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --disable-samplemap --enable-avoid-unaligned --enable-avoid-float"
diff --git a/packages/navit/navit_0.0.3.bb b/packages/navit/navit_0.0.3.bb
index 7fdb491882..a926528faf 100644
--- a/packages/navit/navit_0.0.3.bb
+++ b/packages/navit/navit_0.0.3.bb
@@ -1,16 +1,5 @@
require navit.inc
-PR = "r3"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
- file://navit.xml-so.patch;patch=1 \
- file://navit.desktop"
-
-EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap --enable-avoid-float --enable-avoid-unaligned"
-
-do_install_append() {
- install -d ${D}/usr/share/applications/
-
- install -m 0644 ${WORKDIR}/navit.desktop ${D}/usr/share/applications/
-}
+PR = "r4"
+SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz"
diff --git a/packages/navit/navit_cvs.bb b/packages/navit/navit_cvs.bb
index 0f9583324c..014e7d3a53 100644
--- a/packages/navit/navit_cvs.bb
+++ b/packages/navit/navit_cvs.bb
@@ -1,15 +1,11 @@
require navit.inc
PV = "0.0.3+cvs${SRCDATE}"
-PR = "r3"
+PR = "r4"
S = "${WORKDIR}/navit"
-SRC_URI = "cvs://anonymous@navit.cvs.sourceforge.net/cvsroot/navit;module=navit \
- file://navit.xml-so.patch;patch=1 \
- file://navit.desktop"
-
-EXTRA_OECONF = "--disable-binding-python --disable-gui-sdl --disable-samplemap --enable-avoid-float --enable-avoid-unaligned"
+SRC_URI = "cvs://anonymous@navit.cvs.sourceforge.net/cvsroot/navit;module=navit"
EXTRA_AUTORECONF = " -I m4"
diff --git a/packages/ncurses/ncurses.inc b/packages/ncurses/ncurses.inc
index 027f037ee5..2c6cfd05b0 100644
--- a/packages/ncurses/ncurses.inc
+++ b/packages/ncurses/ncurses.inc
@@ -1,23 +1,14 @@
DESCRIPTION = "Ncurses library"
HOMEPAGE = "http://www.gnu.org/software/ncurses/ncurses.html"
-LICENSE = "MIT"
SECTION = "libs"
+LICENSE = "MIT"
DEPENDS = "ncurses-native"
-PACKAGES_prepend = "ncurses-tools "
-PACKAGES_append = " ncurses-terminfo"
-FILES_ncurses_append = " ${datadir}/tabset"
RSUGGESTS_${PN} = "ncurses-terminfo"
RPROVIDES = "libncurses5"
inherit autotools
-# This keeps only tput/tset in ncurses
-# clear/reset are in already busybox
-FILES_ncurses-tools = "${bindir}/tic ${bindir}/toe ${bindir}/infotocap ${bindir}/captoinfo ${bindir}/infocmp ${bindir}/clear.${PN} ${bindir}/reset.${PN} ${bindir}/tack "
-FILES_ncurses-terminfo = "${datadir}/terminfo"
-FILES_${PN} = "${bindir}/tput ${bindir}/tset ${libdir}/lib*.so.* usr/share/tabset etc/terminfo"
-
-PARALLEL_MAKE=""
+PARALLEL_MAKE = ""
EXTRA_OECONF = "--with-shared \
--without-profile \
@@ -88,3 +79,12 @@ pkg_prerm_ncurses-tools () {
update-alternatives --remove clear clear.${PN}
update-alternatives --remove reset reset.${PN}
}
+
+PACKAGES_prepend = "ncurses-tools "
+PACKAGES_append = " ncurses-terminfo"
+FILES_ncurses_append = " ${datadir}/tabset"
+# This keeps only tput/tset in ncurses
+# clear/reset are in already busybox
+FILES_ncurses-tools = "${bindir}/tic ${bindir}/toe ${bindir}/infotocap ${bindir}/captoinfo ${bindir}/infocmp ${bindir}/clear.${PN} ${bindir}/reset.${PN} ${bindir}/tack "
+FILES_ncurses-terminfo = "${datadir}/terminfo"
+FILES_${PN} = "${bindir}/tput ${bindir}/tset ${libdir}/lib*.so.* §{datadir}/tabset ${sysconfdir}/terminfo"
diff --git a/packages/ncurses/ncurses_5.3.bb b/packages/ncurses/ncurses_5.3.bb
index e023017f1a..0b0897a409 100644
--- a/packages/ncurses/ncurses_5.3.bb
+++ b/packages/ncurses/ncurses_5.3.bb
@@ -1,7 +1,7 @@
BaseV := "${PV}"
SnapV := "20030906"
PV = "${BaseV}.${SnapV}"
-PR = "r1"
+PR = "r2"
SRC_URI = "${GNU_MIRROR}/ncurses/ncurses-${BaseV}.tar.gz \
file://${SnapV}.patch;patch=1 \
diff --git a/packages/ncurses/ncurses_5.4.bb b/packages/ncurses/ncurses_5.4.bb
index ac125bf6fe..f361d745b3 100644
--- a/packages/ncurses/ncurses_5.4.bb
+++ b/packages/ncurses/ncurses_5.4.bb
@@ -1,4 +1,4 @@
-PR = "r10"
+PR = "r11"
SRC_URI = "${GNU_MIRROR}/ncurses/ncurses-${PV}.tar.gz \
file://visibility.patch;patch=1"
diff --git a/packages/netbase/netbase/mx31moboard/.mtn2git_empty b/packages/netbase/netbase/mx31moboard/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/netbase/netbase/mx31moboard/.mtn2git_empty
diff --git a/packages/netbase/netbase/mx31moboard/interfaces b/packages/netbase/netbase/mx31moboard/interfaces
new file mode 100644
index 0000000000..17d2b151bc
--- /dev/null
+++ b/packages/netbase/netbase/mx31moboard/interfaces
@@ -0,0 +1,14 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Ethernet/RNDIS gadget (g_ether)
+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
+
diff --git a/packages/nut/.mtn2git_empty b/packages/nut/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nut/.mtn2git_empty
diff --git a/packages/nut/files/.mtn2git_empty b/packages/nut/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/nut/files/.mtn2git_empty
diff --git a/packages/nut/files/libm.patch b/packages/nut/files/libm.patch
new file mode 100644
index 0000000000..658d42face
--- /dev/null
+++ b/packages/nut/files/libm.patch
@@ -0,0 +1,21 @@
+--- a/drivers/Makefile.am.org 2007-10-01 16:06:24.000000000 +0300
++++ a/drivers/Makefile.am 2008-01-09 02:13:09.000000000 +0200
+@@ -125,7 +125,7 @@
+ tripplite_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LDFLAGS) -lm
+
+ bcmxcp_usb_SOURCES = bcmxcp_usb.c bcmxcp.c nut_usb.c
+-bcmxcp_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LDFLAGS)
++bcmxcp_usb_LDADD = $(LDADD_DRIVERS) $(LIBUSB_LDFLAGS) -lm
+
+ megatec_usb_SOURCES = megatec.c megatec_usb.c libusb.c
+ megatec_usb_CFLAGS = $(AM_CFLAGS) -DMEGATEC_SUBDRV
+--- a/drivers/Makefile.am.org 2008-01-09 02:14:32.000000000 +0200
++++ a/drivers/Makefile.am 2008-01-09 02:17:37.000000000 +0200
+@@ -67,6 +67,7 @@
+ al175_SOURCES = al175.c
+ apcsmart_SOURCES = apcsmart.c
+ bcmxcp_SOURCES = bcmxcp.c bcmxcp_ser.c
++bcmxcp_LDADD = $(LDADD) -lm
+ belkin_SOURCES = belkin.c
+ belkinunv_SOURCES = belkinunv.c
+ bestfcom_SOURCES = bestfcom.c
diff --git a/packages/nut/nut_2.2.1.bb b/packages/nut/nut_2.2.1.bb
new file mode 100644
index 0000000000..db3367435d
--- /dev/null
+++ b/packages/nut/nut_2.2.1.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Network UPS Tools"
+LICENSE = "GPL"
+DEPENDS = "libusb"
+PR = "r1"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-usb"
+
+SRC_URI = "http://www.networkupstools.org/source/2.2/nut-${PV}.tar.gz \
+ file://libm.patch;patch=1 \
+ "
+
+FILES_${PN} += "${datadir}/"
diff --git a/packages/obsolete/classpath/.mtn2git_empty b/packages/obsolete/classpath/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/classpath/.mtn2git_empty
diff --git a/packages/classpath/classpath-gtk_0.93.bb b/packages/obsolete/classpath/classpath-gtk_0.93.bb
index a3b39d92f8..3c9f073e26 100644
--- a/packages/classpath/classpath-gtk_0.93.bb
+++ b/packages/obsolete/classpath/classpath-gtk_0.93.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ cairo gconf libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ cairo gconf libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "classpath-common (>= ${PV})"
RCONFLICTS_${PN} = "classpath-minimal"
diff --git a/packages/classpath/classpath-gtk_cvs.bb b/packages/obsolete/classpath/classpath-gtk_cvs.bb
index 18d79decae..4d4895a319 100644
--- a/packages/classpath/classpath-gtk_cvs.bb
+++ b/packages/obsolete/classpath/classpath-gtk_cvs.bb
@@ -6,7 +6,7 @@ SRCDATE_${PN} ?= "20070501"
PV = "0.93+cvs${SRCDATE}"
### note from Laibsch: bug 2523 has information on how to build this package
-DEPENDS = "glib-2.0 gtk+ cairo gconf ecj-native zip-native virtual/java-native libxtst"
+DEPENDS = "glib-2.0 gtk+ cairo gconf virtual/javac-native zip-native virtual/java-native libxtst"
RDEPENDS_${PN} = "classpath-common (>= ${PV})"
RCONFLICTS_${PN} = "classpath-minimal"
@@ -15,7 +15,7 @@ SRC_URI = "cvs://anonymous@cvs.savannah.gnu.org/sources/classpath;module=classpa
S = "${WORKDIR}/classpath"
-EXTRA_OECONF = "--with-ecj=${STAGING_BINDIR_NATIVE}/ecj --with-ecj-jar=${STAGING_BINDIR_NATIVE}/ecj.jar --disable-plugin --disable-dssi --disable-alsa"
+EXTRA_OECONF = "--with-javac=${STAGING_BINDIR_NATIVE}/javac --with-ecj-jar=${STAGING_DATADIR_NATIVE}/ecj-bootstrap.jar --disable-plugin --disable-dssi --disable-alsa"
do_stage() {
install -d ${STAGING_INCDIR}/classpath
diff --git a/packages/classpath/classpath-minimal-native_0.93.bb b/packages/obsolete/classpath/classpath-minimal-native_0.93.bb
index 83cb60142c..e7862e6e3f 100644
--- a/packages/classpath/classpath-minimal-native_0.93.bb
+++ b/packages/obsolete/classpath/classpath-minimal-native_0.93.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 libart-lgpl pango libxtst virtual/javac-native zip-native"
PR = "r1"
SRC_URI += "file://disable-automake-checks-v2.patch;patch=1"
diff --git a/packages/classpath/classpath-minimal-native_0.95.bb b/packages/obsolete/classpath/classpath-minimal-native_0.95.bb
index 28b25a7cb9..28b25a7cb9 100644
--- a/packages/classpath/classpath-minimal-native_0.95.bb
+++ b/packages/obsolete/classpath/classpath-minimal-native_0.95.bb
diff --git a/packages/classpath/classpath-minimal_0.90.bb b/packages/obsolete/classpath/classpath-minimal_0.90.bb
index 8d9554c999..e006e23c32 100644
--- a/packages/classpath/classpath-minimal_0.90.bb
+++ b/packages/obsolete/classpath/classpath-minimal_0.90.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "jikes-native zip-native"
+DEPENDS = "virtual/javac-native zip-native"
RDEPENDS_${PBN}-minimal = "${PBN}-common (>= ${PV})"
RCONFLICTS_${PBN}-minimal = "${PBN}-gtk"
diff --git a/packages/classpath/classpath-minimal_0.95.bb b/packages/obsolete/classpath/classpath-minimal_0.95.bb
index bca7a46919..cb38710ac1 100644
--- a/packages/classpath/classpath-minimal_0.95.bb
+++ b/packages/obsolete/classpath/classpath-minimal_0.95.bb
@@ -11,13 +11,13 @@ S = "${WORKDIR}/classpath-${PV}"
SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz"
-DEPENDS = "ecj-native zip-native"
+DEPENDS = "virtual/javac-native zip-native"
inherit autotools
EXTRA_OECONF = "--with-glibj \
- --with-ecj=${STAGING_BINDIR_NATIVE}/ecj \
+ --with-javac=${STAGING_BINDIR_NATIVE}/javac \
--disable-alsa \
--disable-gconf-peer \
--disable-gtk-peer \
diff --git a/packages/obsolete/classpath/classpath.inc b/packages/obsolete/classpath/classpath.inc
new file mode 100644
index 0000000000..d9498c99d5
--- /dev/null
+++ b/packages/obsolete/classpath/classpath.inc
@@ -0,0 +1,30 @@
+DESCRIPTION = "GNU Classpath standard Java libraries"
+HOMEPAGE = "http://www.gnu.org/software/classpath/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "Classpath"
+PROVIDES = "classpath"
+RPROVIDES = "classpath"
+
+SRC_URI = "${GNU_MIRROR}/classpath/classpath-${PV}.tar.gz \
+ file://gconf_version.patch;patch=1 \
+ file://fix-endian-arm-floats.patch;patch=1"
+
+inherit autotools
+
+do_stage() {
+ install -d ${STAGING_INCDIR}/classpath
+ install -m 0755 include/jni* ${STAGING_INCDIR}/classpath/
+}
+
+do_install() {
+ autotools_do_install
+ mv ${D}${libdir}/security ${D}${libdir}/${PN}
+}
+
+PACKAGES =+ "classpath-common classpath-examples classpath-tools"
+FILES_classpath-common += "${datadir}/classpath/glibj.zip"
+FILES_classpath-examples += "${datadir}/classpath/examples"
+FILES_classpath-tools += "${datadir}/classpath/tools.zip ${datadir}/classpath/tools"
+FILES_classpath-dev += "${libdir}/*.so"
+FILES_classpath-dbg += "${libdir}/classpath/.debug"
diff --git a/packages/classpath/classpath_0.14.bb b/packages/obsolete/classpath/classpath_0.14.bb
index e4d73bbd3a..a20aa73992 100644
--- a/packages/classpath/classpath_0.14.bb
+++ b/packages/obsolete/classpath/classpath_0.14.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
PR = "r2"
diff --git a/packages/classpath/classpath_0.15.bb b/packages/obsolete/classpath/classpath_0.15.bb
index e4d73bbd3a..a20aa73992 100644
--- a/packages/classpath/classpath_0.15.bb
+++ b/packages/obsolete/classpath/classpath_0.15.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
PR = "r2"
diff --git a/packages/classpath/classpath_0.17.bb b/packages/obsolete/classpath/classpath_0.17.bb
index e4d73bbd3a..a20aa73992 100644
--- a/packages/classpath/classpath_0.17.bb
+++ b/packages/obsolete/classpath/classpath_0.17.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (${PV})"
PR = "r2"
diff --git a/packages/classpath/classpath_0.18.bb b/packages/obsolete/classpath/classpath_0.18.bb
index 9b9e8c3451..8696501fcf 100644
--- a/packages/classpath/classpath_0.18.bb
+++ b/packages/obsolete/classpath/classpath_0.18.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
PR = "r1"
diff --git a/packages/classpath/classpath_0.19.bb b/packages/obsolete/classpath/classpath_0.19.bb
index 9b9e8c3451..8696501fcf 100644
--- a/packages/classpath/classpath_0.19.bb
+++ b/packages/obsolete/classpath/classpath_0.19.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
PR = "r1"
diff --git a/packages/classpath/classpath_0.20.bb b/packages/obsolete/classpath/classpath_0.20.bb
index 9b9e8c3451..8696501fcf 100644
--- a/packages/classpath/classpath_0.20.bb
+++ b/packages/obsolete/classpath/classpath_0.20.bb
@@ -1,6 +1,6 @@
require classpath.inc
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
PR = "r1"
diff --git a/packages/classpath/classpath_cvs.bb b/packages/obsolete/classpath/classpath_cvs.bb
index 9e5ac2f000..943af376a7 100644
--- a/packages/classpath/classpath_cvs.bb
+++ b/packages/obsolete/classpath/classpath_cvs.bb
@@ -7,7 +7,7 @@ PV = "0.20+cvs${SRCDATE}"
DEFAULT_PREFERENCE = "-1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-common (>= ${PV})"
SRC_URI = "cvs://anoncvs@cvs.gnu.org/cvsroot/classpath;method=pserver;rsh=ssh;module=classpath \
diff --git a/packages/obsolete/classpath/files/.mtn2git_empty b/packages/obsolete/classpath/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/classpath/files/.mtn2git_empty
diff --git a/packages/classpath/files/disable-automake-checks-v2.patch b/packages/obsolete/classpath/files/disable-automake-checks-v2.patch
index 0c1df1acae..0c1df1acae 100644
--- a/packages/classpath/files/disable-automake-checks-v2.patch
+++ b/packages/obsolete/classpath/files/disable-automake-checks-v2.patch
diff --git a/packages/classpath/files/disable-automake-checks.patch b/packages/obsolete/classpath/files/disable-automake-checks.patch
index d6a55428ad..d6a55428ad 100644
--- a/packages/classpath/files/disable-automake-checks.patch
+++ b/packages/obsolete/classpath/files/disable-automake-checks.patch
diff --git a/packages/classpath/files/fix-endian-arm-floats.patch b/packages/obsolete/classpath/files/fix-endian-arm-floats.patch
index a9af0611b2..a9af0611b2 100644
--- a/packages/classpath/files/fix-endian-arm-floats.patch
+++ b/packages/obsolete/classpath/files/fix-endian-arm-floats.patch
diff --git a/packages/classpath/files/gconf_version.patch b/packages/obsolete/classpath/files/gconf_version.patch
index b1be1209a2..b1be1209a2 100644
--- a/packages/classpath/files/gconf_version.patch
+++ b/packages/obsolete/classpath/files/gconf_version.patch
diff --git a/packages/obsolete/jamvm/.mtn2git_empty b/packages/obsolete/jamvm/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/jamvm/.mtn2git_empty
diff --git a/packages/obsolete/jamvm/files/.mtn2git_empty b/packages/obsolete/jamvm/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/jamvm/files/.mtn2git_empty
diff --git a/packages/obsolete/jamvm/files/jamvm-1.3.1-size-defaults.patch b/packages/obsolete/jamvm/files/jamvm-1.3.1-size-defaults.patch
new file mode 100644
index 0000000000..a41beee982
--- /dev/null
+++ b/packages/obsolete/jamvm/files/jamvm-1.3.1-size-defaults.patch
@@ -0,0 +1,12 @@
+--- jamvm-1.3.1.orig/src/jam.h 2005-07-17 23:53:34.000000000 +0200
++++ jamvm-1.3.1/src/jam.h 2005-07-17 23:54:17.000000000 +0200
+@@ -548,7 +548,9 @@
+ #endif
+
+ /* default size of the Java stack */
++#ifndef DEFAULT_STACK
+ #define DEFAULT_STACK 64*KB
++#endif
+
+ /* size of emergency area - big enough to create
+ a StackOverflow exception */
diff --git a/packages/obsolete/jamvm/jamvm-1.3.0/.mtn2git_empty b/packages/obsolete/jamvm/jamvm-1.3.0/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/jamvm/jamvm-1.3.0/.mtn2git_empty
diff --git a/packages/jamvm/jamvm-1.3.0/heap-size.patch b/packages/obsolete/jamvm/jamvm-1.3.0/heap-size.patch
index 36d681889d..36d681889d 100644
--- a/packages/jamvm/jamvm-1.3.0/heap-size.patch
+++ b/packages/obsolete/jamvm/jamvm-1.3.0/heap-size.patch
diff --git a/packages/jamvm/jamvm_1.3.0.bb b/packages/obsolete/jamvm/jamvm_1.3.0.bb
index ffdf74938f..ffdf74938f 100644
--- a/packages/jamvm/jamvm_1.3.0.bb
+++ b/packages/obsolete/jamvm/jamvm_1.3.0.bb
diff --git a/packages/jamvm/jamvm_1.3.1.bb b/packages/obsolete/jamvm/jamvm_1.3.1.bb
index 20b1535707..20b1535707 100644
--- a/packages/jamvm/jamvm_1.3.1.bb
+++ b/packages/obsolete/jamvm/jamvm_1.3.1.bb
diff --git a/packages/jamvm/jamvm_1.3.2.bb b/packages/obsolete/jamvm/jamvm_1.3.2.bb
index 9727fd6cda..9727fd6cda 100644
--- a/packages/jamvm/jamvm_1.3.2.bb
+++ b/packages/obsolete/jamvm/jamvm_1.3.2.bb
diff --git a/packages/jamvm/jamvm_1.4.1.bb b/packages/obsolete/jamvm/jamvm_1.4.1.bb
index 9727fd6cda..9727fd6cda 100644
--- a/packages/jamvm/jamvm_1.4.1.bb
+++ b/packages/obsolete/jamvm/jamvm_1.4.1.bb
diff --git a/packages/obsolete/quilt/.mtn2git_empty b/packages/obsolete/quilt/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/quilt/.mtn2git_empty
diff --git a/packages/obsolete/quilt/quilt-0.39/.mtn2git_empty b/packages/obsolete/quilt/quilt-0.39/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/quilt/quilt-0.39/.mtn2git_empty
diff --git a/packages/quilt/quilt-0.39/non-gnu.patch b/packages/obsolete/quilt/quilt-0.39/non-gnu.patch
index 8b07bc2923..8b07bc2923 100644
--- a/packages/quilt/quilt-0.39/non-gnu.patch
+++ b/packages/obsolete/quilt/quilt-0.39/non-gnu.patch
diff --git a/packages/quilt/quilt-0.39/nostrip.patch b/packages/obsolete/quilt/quilt-0.39/nostrip.patch
index 4dedad96d4..4dedad96d4 100644
--- a/packages/quilt/quilt-0.39/nostrip.patch
+++ b/packages/obsolete/quilt/quilt-0.39/nostrip.patch
diff --git a/packages/quilt/quilt-native_0.39.bb b/packages/obsolete/quilt/quilt-native_0.39.bb
index 7caa9f620c..7caa9f620c 100644
--- a/packages/quilt/quilt-native_0.39.bb
+++ b/packages/obsolete/quilt/quilt-native_0.39.bb
diff --git a/packages/quilt/quilt_0.39.bb b/packages/obsolete/quilt/quilt_0.39.bb
index 5d8ae086c2..5d8ae086c2 100644
--- a/packages/quilt/quilt_0.39.bb
+++ b/packages/obsolete/quilt/quilt_0.39.bb
diff --git a/packages/quilt/quilt_0.39.inc b/packages/obsolete/quilt/quilt_0.39.inc
index 4fbbb03316..4fbbb03316 100644
--- a/packages/quilt/quilt_0.39.inc
+++ b/packages/obsolete/quilt/quilt_0.39.inc
diff --git a/packages/octave/octave.inc b/packages/octave/octave.inc
index 414f95bf83..5d8fe756f9 100644
--- a/packages/octave/octave.inc
+++ b/packages/octave/octave.inc
@@ -1,7 +1,4 @@
-DESCRIPTION = "GNU Octave is a high-level language, primarily intended for numerical computations. \
-It provides a convenient command line interface for solving linear and nonlinear problems numerically, \
-and for performing other numerical experiments using a language that is mostly compatible with Matlab. \
-It may also be used as a batch-oriented language."
+DESCRIPTION = "Matlab alternative for numerical computations"
HOMEPAGE = "http://www.gnu.org/software/octave/"
SECTION = "console/scientific"
LICENSE = "GPL"
@@ -11,7 +8,11 @@ RDEPENDS = "libfftw3"
inherit autotools
-EXTRA_OECONF = "--without-hdf5"
+EXTRA_OECONF = "--without-hdf5 --without-glpk -without-umfpack \
+ --without-colamd --without-ccolamd --without-cholmod \
+ --without-cxsparse"
+
+# additional missing dependency/functionality: Qhull gperf
do_configure() {
gnu-configize
@@ -26,4 +27,3 @@ FILES_${PN}-m = "${datadir}/${PN}/*"
do_stage() {
autotools_stage_all
}
-
diff --git a/packages/octave/octave_2.1.73.bb b/packages/octave/octave_2.1.73.bb
index a6bf240732..8efe5243d7 100644
--- a/packages/octave/octave_2.1.73.bb
+++ b/packages/octave/octave_2.1.73.bb
@@ -2,7 +2,7 @@ require octave.inc
SRC_URI = "ftp://ftp.octave.org/pub/octave/obsolete/${PN}-${PV}.tar.gz"
-PR = "r0"
+PR = "r1"
PACKAGES =+ "libcruft-dev liboctave-dev liboctinterp-dev"
diff --git a/packages/octave/octave_2.9.19.bb b/packages/octave/octave_2.9.19.bb
index b92a181754..3b56c8657d 100644
--- a/packages/octave/octave_2.9.19.bb
+++ b/packages/octave/octave_2.9.19.bb
@@ -3,22 +3,22 @@ require octave.inc
SRC_URI = "ftp://ftp.octave.org/pub/octave/${PN}-${PV}.tar.gz \
file://configure.patch;patch=1"
-PR = "r0"
+PR = "r1"
PACKAGES =+ "libcruft liboctave liboctinterp octave-oct \
libcruft-dev liboctave-dev liboctinterp-dev \
libcruft-dbg liboctave-dbg liboctinterp-dbg"
-FILES_libcruft = "${libdir}/${PN}-${PV}/libcruft*"
-FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft.so"
+FILES_libcruft = "${libdir}/${PN}-${PV}/libcruft.so.*"
+FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft*"
FILES_libcruft-dbg += "${libdir}/${PN}-${PV}/.debug/libcruft*"
-FILES_liboctave = "${libdir}/${PN}-${PV}/liboctave*"
-FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave.so"
+FILES_liboctave = "${libdir}/${PN}-${PV}/liboctave.so.*"
+FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave*"
FILES_liboctave-dbg += "${libdir}/${PN}-${PV}/.debug/liboctave*"
-FILES_liboctinterp = "${libdir}/${PN}-${PV}/liboctinterp*"
-FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp.so"
+FILES_liboctinterp = "${libdir}/${PN}-${PV}/liboctinterp.so.*"
+FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp*"
FILES_liboctinterp-dbg += "${libdir}/${PN}-${PV}/.debug/liboctinterp*"
# octave-oct provides subroutines in .oct file format
diff --git a/packages/octave/octave_3.0.0.bb b/packages/octave/octave_3.0.0.bb
index b92a181754..3b56c8657d 100644
--- a/packages/octave/octave_3.0.0.bb
+++ b/packages/octave/octave_3.0.0.bb
@@ -3,22 +3,22 @@ require octave.inc
SRC_URI = "ftp://ftp.octave.org/pub/octave/${PN}-${PV}.tar.gz \
file://configure.patch;patch=1"
-PR = "r0"
+PR = "r1"
PACKAGES =+ "libcruft liboctave liboctinterp octave-oct \
libcruft-dev liboctave-dev liboctinterp-dev \
libcruft-dbg liboctave-dbg liboctinterp-dbg"
-FILES_libcruft = "${libdir}/${PN}-${PV}/libcruft*"
-FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft.so"
+FILES_libcruft = "${libdir}/${PN}-${PV}/libcruft.so.*"
+FILES_libcruft-dev = "${libdir}/${PN}-${PV}/libcruft*"
FILES_libcruft-dbg += "${libdir}/${PN}-${PV}/.debug/libcruft*"
-FILES_liboctave = "${libdir}/${PN}-${PV}/liboctave*"
-FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave.so"
+FILES_liboctave = "${libdir}/${PN}-${PV}/liboctave.so.*"
+FILES_liboctave-dev = "${libdir}/${PN}-${PV}/liboctave*"
FILES_liboctave-dbg += "${libdir}/${PN}-${PV}/.debug/liboctave*"
-FILES_liboctinterp = "${libdir}/${PN}-${PV}/liboctinterp*"
-FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp.so"
+FILES_liboctinterp = "${libdir}/${PN}-${PV}/liboctinterp.so.*"
+FILES_liboctinterp-dev = "${libdir}/${PN}-${PV}/liboctinterp*"
FILES_liboctinterp-dbg += "${libdir}/${PN}-${PV}/.debug/liboctinterp*"
# octave-oct provides subroutines in .oct file format
diff --git a/packages/openjade/openjade-native_1.3.2.bb b/packages/openjade/openjade-native_1.3.2.bb
index ffa945bf42..11a3ca8525 100644
--- a/packages/openjade/openjade-native_1.3.2.bb
+++ b/packages/openjade/openjade-native_1.3.2.bb
@@ -28,14 +28,15 @@ do_stage () {
# Refer to http://www.linuxfromscratch.org/blfs/view/stable/pst/openjade.html
# for details.
install -m 0755 ${S}/jade/.libs/openjade ${STAGING_BINDIR_NATIVE}/openjade
- ln -sf openjade ${STAGING_BINDIR}/jade
+ ln -sf openjade ${STAGING_BINDIR_NATIVE}/jade
oe_libinstall -a -so -C style libostyle ${STAGING_LIBDIR}
oe_libinstall -a -so -C spgrove libospgrove ${STAGING_LIBDIR}
oe_libinstall -a -so -C grove libogrove ${STAGING_LIBDIR}
- install -v -m644 dsssl/catalog ${STAGING_DATADIR}/sgml/openjade-${PV}
- install -v -m644 dsssl/*.{dtd,dsl,sgm} ${STAGING_DATADIR}/sgml/openjade-${PV}
+ install -d ${STAGING_DATADIR}/sgml/openjade-${PV}
+ install -m 644 dsssl/catalog ${STAGING_DATADIR}/sgml/openjade-${PV}
+ install -m 644 dsssl/*.{dtd,dsl,sgm} ${STAGING_DATADIR}/sgml/openjade-${PV}
install-catalog --add ${sysconfdir}/sgml/openjade-${PV}.cat \
${STAGING_DATADIR}/sgml/openjade-${PV}/catalog
diff --git a/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb b/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb
index 1526cbab55..7533f81958 100644
--- a/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb
+++ b/packages/openmoko-spaces/openmoko-toolchain-scripts_svn.bb
@@ -1,15 +1,14 @@
DESCRIPTION = "Convenient scripts to be used with openmoko toolchain."
-PACKAGE_ARCH = "all"
+PR = "r1"
SRC_URI = "svn://svn.openmoko.org/developers/john_lee;module=toolkit;proto=http"
-SRC_URI += "svn://svn.openmoko.org/trunk/src/target/OM-2007.2/applications;module=openmoko-sample2;proto=http"
-SRCREV="3630"
+S = "${WORKDIR}/toolkit"
+
FILES_${PN} = "/"
do_install () {
- (find ${WORKDIR} -type d -name ".svn" | xargs rm -rf) || true
- install -m 755 -d ${D}/share
- cp -dr ${WORKDIR}/toolkit/* ${D}
- cp -dr ${WORKDIR}/openmoko-sample2 ${D}/share
+ cp -dr ${S}/* ${D}
+ find ${D} -name ".svn" | xargs rm -rf
+ rm -r ${D}/patches
}
diff --git a/packages/openmoko2/openmoko-sample2_svn.bb b/packages/openmoko2/openmoko-sample2_svn.bb
index 4c2c5aad46..9118f89e8a 100644
--- a/packages/openmoko2/openmoko-sample2_svn.bb
+++ b/packages/openmoko2/openmoko-sample2_svn.bb
@@ -9,7 +9,7 @@ inherit openmoko2
PACKAGES += "${PN}-src"
# path should match the toolchain path
FILES_${PN}-src = "/usr/local/openmoko"
-PACKAGE_ARCH_${PN}-src = "all"
+PACKAGE_ARCH_${PN}-src = "${BUILD_ARCH}-all-sdk"
do_configure_prepend() {
install -d ${WORKDIR}/source
diff --git a/packages/openmoko2/settingsgui_0.7+0.8-beta.bb b/packages/openmoko2/settingsgui_0.7+0.8-beta.bb
new file mode 100644
index 0000000000..502fad7309
--- /dev/null
+++ b/packages/openmoko2/settingsgui_0.7+0.8-beta.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "OpenMoko Settings GUI"
+AUTHOR = "Kristian M."
+SECTION = "openmoko/applications"
+RDEPENDS = "python-pygtk python-subprocess python-threading"
+LICENSE = "GPL"
+PR = "r0"
+
+SRC_URI = "http://mput.de/~kristian/.openmoko/settingsgui-0.8-beta.tar.bz2"
+S = "${WORKDIR}/settingsgui-0.8-beta"
+
+inherit distutils
diff --git a/packages/openprotium-init/files/boot/disk b/packages/openprotium-init/files/boot/disk
index b4bbaf1f3c..e1096e225a 100644
--- a/packages/openprotium-init/files/boot/disk
+++ b/packages/openprotium-init/files/boot/disk
@@ -25,9 +25,6 @@ then
sleep=6
test "$sleep" -gt 0 && sleep "$sleep"
else
- # make the device links so turnup can use short disk names.
- # probably only necessary on devfs based systems.
- /etc/init.d/devices start
scc -l redflash -f auto
fi
#
diff --git a/packages/openprotium-init/files/functions b/packages/openprotium-init/files/functions
index 25832cf3f9..2700551cc4 100644
--- a/packages/openprotium-init/files/functions
+++ b/packages/openprotium-init/files/functions
@@ -65,21 +65,13 @@ load_functions(){
# 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"
diff --git a/packages/openprotium-init/files/initscripts/zleds b/packages/openprotium-init/files/initscripts/zleds
new file mode 100644
index 0000000000..37adb8490e
--- /dev/null
+++ b/packages/openprotium-init/files/initscripts/zleds
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# This script is executed at the start and end of each run-level
+# transition. It is the first 'stop' script and the last 'start'
+# script.
+#
+# 'stop' indicates the start of a runlevel change
+# 'start' at the end of the runlevel change - we are in the new
+# runlevel.
+#
+# state outputs 'system', 'user' etc according the the nature of
+# the runlevel it is passed (the *new* runlevel is used).
+state(){
+ case "$1" in
+ S|N) echo system;;
+ 0|6) echo shutdown;;
+ 1) echo singleuser;;
+ 2|3|4|5) echo user;;
+ *) echo "led change: $runlevel: runlevel unknown" >&2
+ echo system;;
+ esac
+}
+
+case "$1" in
+start) scc -l blue -f auto;;
+stop) scc -l redflash;;
+*) echo "led change: $1: command ignored" >&2
+ ;;
+esac
diff --git a/packages/openprotium-init/openprotium-init_0.10.bb b/packages/openprotium-init/openprotium-init_0.10.bb
index 92c9d789cb..f8facbb36f 100644
--- a/packages/openprotium-init/openprotium-init_0.10.bb
+++ b/packages/openprotium-init/openprotium-init_0.10.bb
@@ -19,6 +19,7 @@ SRC_URI = "file://boot/flash \
file://initscripts/sysconfsetup \
file://initscripts/umountinitrd.sh \
file://initscripts/loadmodules.sh \
+ file://initscripts/zleds \
file://functions \
file://modulefunctions \
file://conffiles \
@@ -35,7 +36,7 @@ SCRIPTS = "turnup reflash sysconf"
BOOTSCRIPTS = "flash disk nfs network udhcpc.script"
INITSCRIPTS = "syslog.buffer syslog.file syslog.network \
rmrecovery sysconfsetup umountinitrd.sh \
- fixfstab loadmodules.sh"
+ fixfstab loadmodules.sh zleds"
# This just makes things easier...
@@ -129,6 +130,8 @@ pkg_postinst_openprotium-init() {
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 .
+ update-rc.d $opt zleds start 99 1 2 3 4 5 . stop 5 0 1 2 3 4 5 6 .
+
}
pkg_postrm_openprotium-init() {
diff --git a/packages/orinoco/orinoco-modules.inc b/packages/orinoco/orinoco-modules.inc
new file mode 100644
index 0000000000..fc14eb3ee5
--- /dev/null
+++ b/packages/orinoco/orinoco-modules.inc
@@ -0,0 +1,21 @@
+DESCRIPTION = "A driver for wireless LAN cards based on Hermes(Orinoco) cards. \
+Also contains support for cards using downloadable firmware, i.e. the Symbol/Socket family."
+SECTION = "kernel/modules"
+PRIORITY = "optional"
+PROVIDES = "spectrum-modules"
+LICENSE = "GPL"
+
+SRC_URI = "http://ozlabs.org/people/dgibson/dldwd/orinoco-${PV}.tar.gz"
+S = "${WORKDIR}/orinoco-${PV}"
+
+inherit module
+
+PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
+FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
+FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
+FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
+ /lib/modules/${KERNEL_VERSION}/net/orinoco_nortel${KERNEL_OBJECT_SUFFIX}"
+FILES_orinoco-modules = "/lib/modules/"
+RDEPENDS_orinoco-modules-pci = "orinoco-modules"
+RDEPENDS_orinoco-modules-usb = "orinoco-modules"
+RDEPENDS_orinoco-modules-nortel = "orinoco-modules"
diff --git a/packages/orinoco/orinoco-modules_0.13e.bb b/packages/orinoco/orinoco-modules_0.13e.bb
index 9c5cc2f776..f8f8e446a9 100644
--- a/packages/orinoco/orinoco-modules_0.13e.bb
+++ b/packages/orinoco/orinoco-modules_0.13e.bb
@@ -1,11 +1,8 @@
-DESCRIPTION = "A driver for wireless LAN cards based on Hermes(Orinoco) cards. \
-Also contains support for cards using downloadable firmware, i.e. the Symbol/Socket family."
-SECTION = "kernel/modules"
-PRIORITY = "optional"
-LICENSE = "GPL"
+require orinoco-modules.inc
+
PR = "r4"
-SRC_URI = "http://ozlabs.org/people/dgibson/dldwd/orinoco-${PV}.tar.gz; \
+SRC_URI += "\
file://crosscompile.patch;patch=1 \
file://monitor-${PV}.patch;patch=1 \
file://spectrum.conf \
@@ -14,8 +11,6 @@ SRC_URI = "http://ozlabs.org/people/dgibson/dldwd/orinoco-${PV}.tar.gz; \
file://orinoco_cs.conf"
S = "${WORKDIR}/orinoco-${PV}"
-inherit module
-
do_compile_prepend() {
cp -f ${WORKDIR}/spectrum* ${S}/
}
@@ -30,14 +25,5 @@ do_install() {
install -m 0644 ${WORKDIR}/orinoco_cs.conf ${D}${sysconfdir}/modutils/
}
-PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
FILES_orinoco-modules-cs = "/lib/modules/${KERNEL_VERSION}/net/*_cs${KERNEL_OBJECT_SUFFIX} /${sysconfdir}"
-FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
- /lib/modules/${KERNEL_VERSION}/net/orinoco_nortel${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules = "/lib/modules/"
RDEPENDS_orinoco-modules-cs = "orinoco-modules"
-RDEPENDS_orinoco-modules-pci = "orinoco-modules"
-RDEPENDS_orinoco-modules-usb = "orinoco-modules"
-RDEPENDS_orinoco-modules-nortel = "orinoco-modules"
diff --git a/packages/orinoco/orinoco-modules_0.15rc1.bb b/packages/orinoco/orinoco-modules_0.15rc1.bb
index ebf0f03bbf..7289b6eaf8 100644
--- a/packages/orinoco/orinoco-modules_0.15rc1.bb
+++ b/packages/orinoco/orinoco-modules_0.15rc1.bb
@@ -1,10 +1,7 @@
-DESCRIPTION = "A driver for wireless LAN cards based on Hermes(Orinoco) cards. \
-Also contains support for cards using downloadable firmware, i.e. the Symbol/Socket family."
-SECTION = "kernel/modules"
-PRIORITY = "optional"
+require orinoco-modules.inc
+
DEPENDS = "orinoco-conf spectrum-fw"
RDEPENDS = "orinoco-conf"
-LICENSE = "GPL"
PR = "r7"
SRC_URI = "${SOURCEFORGE_MIRROR}/orinoco/orinoco-${PV}.tar.gz \
@@ -13,23 +10,11 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/orinoco/orinoco-${PV}.tar.gz \
file://add_event.patch;patch=1 \
file://add_utsname.patch;patch=1 \
file://spectrum_cs_ids.patch;patch=1"
-S = "${WORKDIR}/orinoco-${PV}"
-
-inherit module
do_install() {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
}
-PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
FILES_orinoco-modules-cs = "/lib/modules/${KERNEL_VERSION}/net/*_cs${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
- /lib/modules/${KERNEL_VERSION}/net/orinoco_nortel${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules = "/lib/modules/"
RDEPENDS_orinoco-modules-cs = "orinoco-modules spectrum-fw"
-RDEPENDS_orinoco-modules-pci = "orinoco-modules"
-RDEPENDS_orinoco-modules-usb = "orinoco-modules"
-RDEPENDS_orinoco-modules-nortel = "orinoco-modules"
diff --git a/packages/orinoco/orinoco-modules_0.15rc2.bb b/packages/orinoco/orinoco-modules_0.15rc2.bb
index 4153e8c4fc..da223fca7d 100644
--- a/packages/orinoco/orinoco-modules_0.15rc2.bb
+++ b/packages/orinoco/orinoco-modules_0.15rc2.bb
@@ -1,37 +1,21 @@
-DESCRIPTION = "A driver for wireless LAN cards based on Hermes(Orinoco) cards. \
-Also contains support for cards using downloadable firmware, i.e. the Symbol/Socket family."
-SECTION = "kernel/modules"
-PRIORITY = "optional"
-PROVIDES = "spectrum-modules"
+require orinoco-modules.inc
+
DEPENDS = "orinoco-conf spectrum-fw"
RDEPENDS = "orinoco-conf"
-LICENSE = "GPL"
PR = "r9"
-SRC_URI = "http://ozlabs.org/people/dgibson/dldwd/orinoco-${PV}.tar.gz \
+SRC_URI += "\
file://makefile_fix.patch;patch=1 \
file://list-move.patch;patch=1 \
file://add_utsname.patch;patch=1 \
file://add_event.patch;patch=1 \
file://spectrum_cs_ids.patch;patch=1 \
file://catch-up-with-kernel-changes.patch;patch=1"
-S = "${WORKDIR}/orinoco-${PV}"
-
-inherit module
do_install() {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
}
-PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
FILES_orinoco-modules-cs = "/lib/modules/${KERNEL_VERSION}/net/*_cs${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
- /lib/modules/${KERNEL_VERSION}/net/orinoco_nortel${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules = "/lib/modules/"
RDEPENDS_orinoco-modules-cs = "orinoco-modules spectrum-fw"
-RDEPENDS_orinoco-modules-pci = "orinoco-modules"
-RDEPENDS_orinoco-modules-usb = "orinoco-modules"
-RDEPENDS_orinoco-modules-nortel = "orinoco-modules"
diff --git a/packages/orinoco/orinoco-modules_cvs.bb b/packages/orinoco/orinoco-modules_cvs.bb
index 5d3efec80f..78bfd2ce0f 100644
--- a/packages/orinoco/orinoco-modules_cvs.bb
+++ b/packages/orinoco/orinoco-modules_cvs.bb
@@ -1,11 +1,7 @@
-DESCRIPTION = "A driver for wireless LAN cards based on Hermes(Orinoco) cards. \
-Also contains support for cards using downloadable firmware, i.e. the Symbol/Socket family."
-SECTION = "kernel/modules"
-PRIORITY = "optional"
-PROVIDES = "spectrum-modules"
+require orinoco-modules.inc
+
DEPENDS = "orinoco-conf spectrum-fw"
RDEPENDS = "orinoco-conf"
-LICENSE = "GPL"
PR = "r2"
PARALLEL_MAKE = ""
@@ -18,21 +14,10 @@ SRC_URI = "cvs://anonymous@cvs.sv.gnu.org/cvsroot/orinoco;module=orinoco;method=
file://list-move.patch;patch=1"
S = "${WORKDIR}/orinoco"
-inherit module
-
do_install() {
install -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
install -m 0644 *${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/${KERNEL_VERSION}/net/
}
-PACKAGES = "orinoco-modules-cs orinoco-modules-pci orinoco-modules-usb orinoco-modules-nortel orinoco-modules"
FILES_orinoco-modules-cs = "/lib/modules/${KERNEL_VERSION}/net/*_cs${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-pci = "/lib/modules/${KERNEL_VERSION}/net/orinoco_p*${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-usb = "/lib/modules/${KERNEL_VERSION}/net/*_usb${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules-nortel = "/lib/modules/${KERNEL_VERSION}/net/orinoco_tmd${KERNEL_OBJECT_SUFFIX} \
- /lib/modules/${KERNEL_VERSION}/net/orinoco_nortel${KERNEL_OBJECT_SUFFIX}"
-FILES_orinoco-modules = "/lib/modules/"
RDEPENDS_orinoco-modules-cs = "orinoco-modules spectrum-fw"
-RDEPENDS_orinoco-modules-pci = "orinoco-modules"
-RDEPENDS_orinoco-modules-usb = "orinoco-modules"
-RDEPENDS_orinoco-modules-nortel = "orinoco-modules"
diff --git a/packages/pngcrush/.mtn2git_empty b/packages/pngcrush/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pngcrush/.mtn2git_empty
diff --git a/packages/pngcrush/pngcrush-native_1.6.4.bb b/packages/pngcrush/pngcrush-native_1.6.4.bb
new file mode 100644
index 0000000000..4e119a167b
--- /dev/null
+++ b/packages/pngcrush/pngcrush-native_1.6.4.bb
@@ -0,0 +1,9 @@
+require pngcrush_${PV}.bb
+
+inherit native
+
+S = "${WORKDIR}/pngcrush-${PV}"
+
+do_stage() {
+ install -m 755 ${S}/pngcrush ${STAGING_BINDIR}/
+}
diff --git a/packages/pngcrush/pngcrush_1.6.4.bb b/packages/pngcrush/pngcrush_1.6.4.bb
new file mode 100644
index 0000000000..9f0413a6cc
--- /dev/null
+++ b/packages/pngcrush/pngcrush_1.6.4.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Tool to optimize PNG images"
+SECTION = "console/graphics"
+HOMEPAGE = "http://pmt.sourceforge.net/pngcrush"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/pmt/pngcrush-${PV}.tar.gz"
+
+#DEPENDS += "libsdl-net smpeg"
+
+EXTRA_OEMAKE = "CC='${CC}' CFLAGS='${CFLAGS}' LD='${CC}'"
+
+do_install () {
+ install -d ${D}${bindir}
+ install -m 755 ${PN} ${D}${bindir}
+}
diff --git a/packages/pointercal/files/fic-gta02/pointercal b/packages/pointercal/files/fic-gta02/pointercal
index 198fd2a776..841ec7fab2 100644
--- a/packages/pointercal/files/fic-gta02/pointercal
+++ b/packages/pointercal/files/fic-gta02/pointercal
Binary files differ
diff --git a/packages/pointercal/pointercal_0.0.bb b/packages/pointercal/pointercal_0.0.bb
index e79ee0b889..42aae8c0c0 100644
--- a/packages/pointercal/pointercal_0.0.bb
+++ b/packages/pointercal/pointercal_0.0.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Touchscreen calibration data"
SECTION = "base"
-PR = "r5"
+PR = "r6"
SRC_URI = "file://pointercal"
S = "${WORKDIR}"
diff --git a/packages/ppp-dialin/ppp-dialin_0.1.bb b/packages/ppp-dialin/ppp-dialin_0.1.bb
index f0d410e455..6861d8ad44 100644
--- a/packages/ppp-dialin/ppp-dialin_0.1.bb
+++ b/packages/ppp-dialin/ppp-dialin_0.1.bb
@@ -2,7 +2,7 @@ SECTION = "console/network"
DESCRIPTION = "Enables PPP dial-in through a serial connection"
DEPENDS = "ppp"
RDEPENDS = "ppp"
-PR = "r4"
+PR = "r5"
LICENSE = "MIT"
SRC_URI = "file://host-peer \
@@ -16,6 +16,7 @@ do_install() {
install -m 0755 ${WORKDIR}/ppp-dialin ${D}${sbindir}
}
+PACKAGE_ARCH = "all"
pkg_postinst() {
if test "x$D" != "x"; then
diff --git a/packages/ppp-dsl/files/.mtn2git_empty b/packages/ppp-dsl/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ppp-dsl/files/.mtn2git_empty
diff --git a/packages/ppp-dsl/dsl-provider b/packages/ppp-dsl/files/dsl-provider
index 6feaf55752..6feaf55752 100644
--- a/packages/ppp-dsl/dsl-provider
+++ b/packages/ppp-dsl/files/dsl-provider
diff --git a/packages/ppp-dsl/ppp_on_boot.dsl b/packages/ppp-dsl/files/ppp_on_boot.dsl
index f1d5183b38..f1d5183b38 100755
--- a/packages/ppp-dsl/ppp_on_boot.dsl
+++ b/packages/ppp-dsl/files/ppp_on_boot.dsl
diff --git a/packages/ppp-dsl/ppp-dsl_0.1-monolithic.bb b/packages/ppp-dsl/ppp-dsl_0.1-monolithic.bb
deleted file mode 100644
index 216c87fffd..0000000000
--- a/packages/ppp-dsl/ppp-dsl_0.1-monolithic.bb
+++ /dev/null
@@ -1,5 +0,0 @@
-include ppp-dsl_0.1.bb
-
-RDEPENDS = "ppp rp-pppoe"
-
-S = "${WORKDIR}/ppp-dsl-0.1"
diff --git a/packages/ppp-dsl/ppp-dsl_0.1.bb b/packages/ppp-dsl/ppp-dsl_0.1.bb
index 8796da86da..8d63e8fc47 100644
--- a/packages/ppp-dsl/ppp-dsl_0.1.bb
+++ b/packages/ppp-dsl/ppp-dsl_0.1.bb
@@ -4,7 +4,7 @@ LICENSE = "PD"
DEPENDS = "ppp rp-pppoe"
RDEPENDS = "ppp rp-pppoe"
RRECOMMENDS = "kernel-module-ppp-async kernel-module-ppp-generic kernel-module-slhc"
-PR = "r2"
+PR = "r5"
SRC_URI = "file://dsl-provider \
file://ppp_on_boot.dsl"
@@ -25,4 +25,6 @@ else
fi
}
-CONFFILES_${PN}_nylon = "${sysconfdir}/ppp/peers/dsl-provider"
+PACKAGE_ARCH = "all"
+
+CONFFILES_${PN} = "${sysconfdir}/ppp/peers/dsl-provider"
diff --git a/packages/ppp/ppp-gprs/.mtn2git_empty b/packages/ppp/ppp-gprs/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ppp/ppp-gprs/.mtn2git_empty
diff --git a/packages/ppp/ppp-gprs/chats/.mtn2git_empty b/packages/ppp/ppp-gprs/chats/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ppp/ppp-gprs/chats/.mtn2git_empty
diff --git a/packages/ppp/ppp-gprs/chats/chat-gprs b/packages/ppp/ppp-gprs/chats/chat-gprs
new file mode 100644
index 0000000000..b90e5ff2cf
--- /dev/null
+++ b/packages/ppp/ppp-gprs/chats/chat-gprs
@@ -0,0 +1,9 @@
+# GPRS AP (Access Point) name should be passed via -T switch
+
+'' ATZ
+OK AT+CGDCONT=1,"IP","\T"
+# We setup profile #1 in the above command, and then use it to call
+# GPRS. This is correct, but some buggy phone may parse only "ATD*99#"
+OK "ATD*99***1#"
+# OK "ATD*99#"
+CONNECT ''
diff --git a/packages/ppp/ppp-gprs/peers/.mtn2git_empty b/packages/ppp/ppp-gprs/peers/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ppp/ppp-gprs/peers/.mtn2git_empty
diff --git a/packages/ppp/ppp-gprs/peers/_gprs b/packages/ppp/ppp-gprs/peers/_gprs
new file mode 100644
index 0000000000..cc316951a0
--- /dev/null
+++ b/packages/ppp/ppp-gprs/peers/_gprs
@@ -0,0 +1,68 @@
+# This is generic pppd config for GPRS connection
+# To connect to specific provider, one
+# more provider-specific config
+# file is required, which will
+# usually just set chat utility params
+# to make connection and call this one.
+# (And in most cases that will be symlink
+# to a file with well-known settings).
+#
+# Usage:
+# pppd <modem_device> call gprs call <country>-<provider>
+# where /etc/ppp/peers/<country>-<provider> ends with line
+# "call _gprs"
+# Example:
+# pppd /dev/rfcomm0 call ua-life
+# Debugging PPP protocol problems:
+# pppd /dev/rfcomm0 call ua-life debug nodetach
+#
+# By default, pppd will go to
+# background once connection is
+# established. 'nodetach' option will
+# prevent this. If you want pppd to
+# even establish connection in
+# background, comment 'updetach' below.
+#
+# To finish connection, use Ctrl+C if
+# 'nodetach' was used, or
+# kill `head -1 /var/run/ppp-gprs.pid`
+# otherwise. If you are sure there is
+# only one pppd connection, you can use
+# killall pppd
+
+##
+## pppd options
+##
+
+# create /var/run/ppp-gprs.pid
+# with pid for this connection
+linkname gprs
+# Connect in foreground, but go
+# to background after that
+updetach
+
+# Treat port as a modem and use
+# reasonable speed
+modem
+crtscts
+115200
+
+# Don't do CCP (compression)
+# negotiation, some providers are
+# rumored to be buggy with this, and
+# most of the rest simply don't support.
+noccp
+# We don't request provider to auth
+# to us
+noauth
+# Don't try to make up our IP address
+noipdefault
+# We want provider to supply us with
+# IP addresses
+ipcp-accept-remote
+ipcp-accept-local
+# Ask provider for DNS and use it
+usepeerdns
+# Route all Internet traffic thru
+# this connection
+defaultroute
diff --git a/packages/ppp/ppp-gprs/peers/_gprs-ap-internet b/packages/ppp/ppp-gprs/peers/_gprs-ap-internet
new file mode 100644
index 0000000000..d55eeb0266
--- /dev/null
+++ b/packages/ppp/ppp-gprs/peers/_gprs-ap-internet
@@ -0,0 +1,3 @@
+# -T options sets value of GPRS AP name. Change this for your cell provider
+connect '/usr/sbin/chat -V -f /etc/ppp/chats/chat-gprs -T internet'
+call gprs
diff --git a/packages/ppp/ppp-gprs_1.0.bb b/packages/ppp/ppp-gprs_1.0.bb
new file mode 100644
index 0000000000..2db6e808f4
--- /dev/null
+++ b/packages/ppp/ppp-gprs_1.0.bb
@@ -0,0 +1,22 @@
+SECTION = "console/network"
+DESCRIPTION = "PPP scripts for easy GPRS connection"
+LICENSE = "GPL"
+RDEPENDS = "ppp"
+PR = "r1"
+
+SRC_URI = "file://peers/* file://chats/*"
+
+do_install () {
+ install -d ${D}${sysconfdir}/ppp/peers/
+ install -d ${D}${sysconfdir}/ppp/chats/
+ install -m 0644 ${WORKDIR}/peers/* ${D}${sysconfdir}/ppp/peers/
+ install -m 0644 ${WORKDIR}/chats/* ${D}${sysconfdir}/ppp/chats/
+
+ # Add links for providers sharing same well-known config
+ ln -sf _gprs-ap-internet ${D}${sysconfdir}/ppp/peers/ua-life
+}
+
+PACKAGE_ARCH = "all"
+
+# In worst case, user may need to edit anything
+CONFFILES_${PN} = "${sysconfdir}/ppp/peers/_gprs ${sysconfdir}/ppp/chats/chat-gprs"
diff --git a/packages/pwsafe/.mtn2git_empty b/packages/pwsafe/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pwsafe/.mtn2git_empty
diff --git a/packages/pwsafe/pwsafe_0.2.0.bb b/packages/pwsafe/pwsafe_0.2.0.bb
new file mode 100644
index 0000000000..1d06326037
--- /dev/null
+++ b/packages/pwsafe/pwsafe_0.2.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "pwsafe is a unix commandline program that manages encrypted password databases."
+AUTHOR = "Nicolas S. Dade <ndade@nsd.dyndns.org>"
+HOMEPAGE = "http://pwsafe.sf.net"
+# SECTION
+PRIORITY = "optional"
+LICENSE = "GPLv2"
+DEPENDS = "openssl readline"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${PN}/${P}.tar.gz"
+
+inherit autotools
+
+# zecke-workaround ;-) Thanks. Should contact upstream to fix their stuff
+EXTRA_OECONF = " --with-openssl-dir=/bla/bla"
+
+do_configure_prepend() {
+ rm ${S}/configure
+}
diff --git a/packages/python/python-2.5-manifest.inc b/packages/python/python-2.5-manifest.inc
index f899eb2fea..165fd2ae60 100644
--- a/packages/python/python-2.5-manifest.inc
+++ b/packages/python/python-2.5-manifest.inc
@@ -1,5 +1,5 @@
########################################################################################################################
-### AUTO-GENERATED by 'contrib/python/generate-manifest-2.5.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>] on Fri Dec 7 11:51:27 2007
+### AUTO-GENERATED by '../../contrib/python/generate-manifest-2.5.py' [(C) 2002-2007 Michael 'Mickey' Lauer <mlauer@vanille-media.de>] on Sun Jan 13 16:02:57 2008
###
### Visit THE Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
###
@@ -13,287 +13,287 @@ PROVIDES+="python-profile python-threading python-distutils python-textutils pyt
PACKAGES="python-profile python-threading python-distutils python-textutils python-codecs python-ctypes python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-core-dbg python-resource python-devel python-math python-hotshot python-unixadmin python-syslog python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
DESCRIPTION_python-profile="Python Basic Profiling Support"
-PR_python-profile="ml5"
+PR_python-profile="ml6"
RDEPENDS_python-profile="python-core"
FILES_python-profile="${libdir}/python2.5/profile.* ${libdir}/python2.5/pstats.* "
DESCRIPTION_python-threading="Python Threading & Synchronization Support"
-PR_python-threading="ml5"
+PR_python-threading="ml6"
RDEPENDS_python-threading="python-core python-lang"
FILES_python-threading="${libdir}/python2.5/_threading_local.* ${libdir}/python2.5/dummy_thread.* ${libdir}/python2.5/dummy_threading.* ${libdir}/python2.5/mutex.* ${libdir}/python2.5/threading.* ${libdir}/python2.5/Queue.* "
DESCRIPTION_python-distutils="Python Distribution Utilities"
-PR_python-distutils="ml5"
+PR_python-distutils="ml6"
RDEPENDS_python-distutils="python-core"
FILES_python-distutils="${libdir}/python2.5/config ${libdir}/python2.5/distutils "
DESCRIPTION_python-textutils="Python Option Parsing, Text Wrapping and Comma-Separated-Value Support"
-PR_python-textutils="ml5"
+PR_python-textutils="ml6"
RDEPENDS_python-textutils="python-core python-io python-re python-stringold"
FILES_python-textutils="${libdir}/python2.5/lib-dynload/_csv.so ${libdir}/python2.5/csv.* ${libdir}/python2.5/optparse.* ${libdir}/python2.5/textwrap.* "
DESCRIPTION_python-codecs="Python Codecs, Encodings & i18n Support"
-PR_python-codecs="ml5"
+PR_python-codecs="ml6"
RDEPENDS_python-codecs="python-core python-lang"
FILES_python-codecs="${libdir}/python2.5/codecs.* ${libdir}/python2.5/encodings ${libdir}/python2.5/gettext.* ${libdir}/python2.5/locale.* ${libdir}/python2.5/lib-dynload/_locale.so ${libdir}/python2.5/lib-dynload/unicodedata.so ${libdir}/python2.5/stringprep.* ${libdir}/python2.5/xdrlib.* "
DESCRIPTION_python-ctypes="Python C Types Support"
-PR_python-ctypes="ml5"
+PR_python-ctypes="ml6"
RDEPENDS_python-ctypes="python-core"
FILES_python-ctypes="${libdir}/python2.5/ctypes ${libdir}/python2.5/lib-dynload/_ctypes.so "
DESCRIPTION_python-pickle="Python Persistence Support"
-PR_python-pickle="ml5"
+PR_python-pickle="ml6"
RDEPENDS_python-pickle="python-core python-codecs python-io python-re"
FILES_python-pickle="${libdir}/python2.5/pickle.* ${libdir}/python2.5/shelve.* ${libdir}/python2.5/lib-dynload/cPickle.so "
DESCRIPTION_python-datetime="Python Calendar and Time support"
-PR_python-datetime="ml5"
+PR_python-datetime="ml6"
RDEPENDS_python-datetime="python-core python-codecs"
FILES_python-datetime="${libdir}/python2.5/_strptime.* ${libdir}/python2.5/calendar.* ${libdir}/python2.5/lib-dynload/datetime.so "
DESCRIPTION_python-core="Python Interpreter and core modules (needed!)"
-PR_python-core="ml5"
+PR_python-core="ml6"
RDEPENDS_python-core=""
FILES_python-core="${libdir}/python2.5/__future__.* ${libdir}/python2.5/copy.* ${libdir}/python2.5/copy_reg.* ${libdir}/python2.5/ConfigParser.* ${libdir}/python2.5/getopt.* ${libdir}/python2.5/linecache.* ${libdir}/python2.5/new.* ${libdir}/python2.5/os.* ${libdir}/python2.5/posixpath.* ${libdir}/python2.5/struct.* ${libdir}/python2.5/warnings.* ${libdir}/python2.5/site.* ${libdir}/python2.5/stat.* ${libdir}/python2.5/UserDict.* ${libdir}/python2.5/UserList.* ${libdir}/python2.5/UserString.* ${libdir}/python2.5/lib-dynload/binascii.so ${libdir}/python2.5/lib-dynload/_struct.so ${libdir}/python2.5/lib-dynload/time.so ${libdir}/python2.5/lib-dynload/xreadlines.so ${libdir}/python2.5/types.* ${bindir}/python* "
DESCRIPTION_python-io="Python Low-Level I/O"
-PR_python-io="ml5"
+PR_python-io="ml6"
RDEPENDS_python-io="python-core python-math"
FILES_python-io="${libdir}/python2.5/lib-dynload/_socket.so ${libdir}/python2.5/lib-dynload/_ssl.so ${libdir}/python2.5/lib-dynload/select.so ${libdir}/python2.5/lib-dynload/termios.so ${libdir}/python2.5/lib-dynload/cStringIO.so ${libdir}/python2.5/pipes.* ${libdir}/python2.5/socket.* ${libdir}/python2.5/tempfile.* ${libdir}/python2.5/StringIO.* "
DESCRIPTION_python-compiler="Python Compiler Support"
-PR_python-compiler="ml5"
+PR_python-compiler="ml6"
RDEPENDS_python-compiler="python-core"
FILES_python-compiler="${libdir}/python2.5/compiler "
DESCRIPTION_python-compression="Python High Level Compression Support"
-PR_python-compression="ml5"
+PR_python-compression="ml6"
RDEPENDS_python-compression="python-core python-zlib"
FILES_python-compression="${libdir}/python2.5/gzip.* ${libdir}/python2.5/zipfile.* "
DESCRIPTION_python-re="Python Regular Expression APIs"
-PR_python-re="ml5"
+PR_python-re="ml6"
RDEPENDS_python-re="python-core"
FILES_python-re="${libdir}/python2.5/re.* ${libdir}/python2.5/sre.* ${libdir}/python2.5/sre_compile.* ${libdir}/python2.5/sre_constants* ${libdir}/python2.5/sre_parse.* "
DESCRIPTION_python-xmlrpc="Python XMLRPC Support"
-PR_python-xmlrpc="ml5"
+PR_python-xmlrpc="ml6"
RDEPENDS_python-xmlrpc="python-core python-xml python-netserver python-lang"
FILES_python-xmlrpc="${libdir}/python2.5/xmlrpclib.* ${libdir}/python2.5/SimpleXMLRPCServer.* "
DESCRIPTION_python-terminal="Python Terminal Controlling Support"
-PR_python-terminal="ml5"
+PR_python-terminal="ml6"
RDEPENDS_python-terminal="python-core python-io"
FILES_python-terminal="${libdir}/python2.5/pty.* ${libdir}/python2.5/tty.* "
DESCRIPTION_python-email="Python Email Support"
-PR_python-email="ml5"
+PR_python-email="ml6"
RDEPENDS_python-email="python-core python-io python-re python-mime python-audio python-image"
FILES_python-email="${libdir}/python2.5/email "
DESCRIPTION_python-image="Python Graphical Image Handling"
-PR_python-image="ml5"
+PR_python-image="ml6"
RDEPENDS_python-image="python-core"
FILES_python-image="${libdir}/python2.5/colorsys.* ${libdir}/python2.5/imghdr.* ${libdir}/python2.5/lib-dynload/imageop.so ${libdir}/python2.5/lib-dynload/rgbimg.so "
DESCRIPTION_python-core-dbg="Python core module debug information"
-PR_python-core-dbg="ml5"
+PR_python-core-dbg="ml6"
RDEPENDS_python-core-dbg="python-core"
FILES_python-core-dbg="${libdir}/python2.5/lib-dynload/.debug ${bindir}/.debug ${libdir}/.debug "
DESCRIPTION_python-resource="Python Resource Control Interface"
-PR_python-resource="ml5"
+PR_python-resource="ml6"
RDEPENDS_python-resource="python-core"
FILES_python-resource="${libdir}/python2.5/lib-dynload/resource.so "
DESCRIPTION_python-devel="Python Development Package"
-PR_python-devel="ml5"
+PR_python-devel="ml6"
RDEPENDS_python-devel="python-core"
FILES_python-devel="${includedir} ${libdir}/python2.5/config "
DESCRIPTION_python-math="Python Math Support"
-PR_python-math="ml5"
+PR_python-math="ml6"
RDEPENDS_python-math="python-core"
FILES_python-math="${libdir}/python2.5/lib-dynload/cmath.so ${libdir}/python2.5/lib-dynload/math.so ${libdir}/python2.5/lib-dynload/_random.so ${libdir}/python2.5/random.* ${libdir}/python2.5/sets.* "
DESCRIPTION_python-hotshot="Python Hotshot Profiler"
-PR_python-hotshot="ml5"
+PR_python-hotshot="ml6"
RDEPENDS_python-hotshot="python-core"
FILES_python-hotshot="${libdir}/python2.5/hotshot ${libdir}/python2.5/lib-dynload/_hotshot.so "
DESCRIPTION_python-unixadmin="Python Unix Administration Support"
-PR_python-unixadmin="ml5"
+PR_python-unixadmin="ml6"
RDEPENDS_python-unixadmin="python-core"
FILES_python-unixadmin="${libdir}/python2.5/lib-dynload/nis.so ${libdir}/python2.5/lib-dynload/grp.so ${libdir}/python2.5/lib-dynload/pwd.so ${libdir}/python2.5/getpass.* "
DESCRIPTION_python-syslog="Python's syslog Interface"
-PR_python-syslog="ml5"
+PR_python-syslog="ml6"
RDEPENDS_python-syslog="python-core"
FILES_python-syslog="${libdir}/python2.5/lib-dynload/syslog.so "
DESCRIPTION_python-tkinter="Python Tcl/Tk Bindings"
-PR_python-tkinter="ml5"
+PR_python-tkinter="ml6"
RDEPENDS_python-tkinter="python-core"
FILES_python-tkinter="${libdir}/python2.5/lib-dynload/_tkinter.so ${libdir}/python2.5/lib-tk "
DESCRIPTION_python-gdbm="Python GNU Database Support"
-PR_python-gdbm="ml5"
+PR_python-gdbm="ml6"
RDEPENDS_python-gdbm="python-core"
FILES_python-gdbm="${libdir}/python2.5/lib-dynload/gdbm.so "
DESCRIPTION_python-fcntl="Python's fcntl Interface"
-PR_python-fcntl="ml5"
+PR_python-fcntl="ml6"
RDEPENDS_python-fcntl="python-core"
FILES_python-fcntl="${libdir}/python2.5/lib-dynload/fcntl.so "
DESCRIPTION_python-netclient="Python Internet Protocol Clients"
-PR_python-netclient="ml5"
+PR_python-netclient="ml6"
RDEPENDS_python-netclient="python-core python-crypt python-datetime python-io python-lang python-logging python-mime"
FILES_python-netclient="${libdir}/python2.5/*Cookie*.* ${libdir}/python2.5/base64.* ${libdir}/python2.5/cookielib.* ${libdir}/python2.5/ftplib.* ${libdir}/python2.5/gopherlib.* ${libdir}/python2.5/hmac.* ${libdir}/python2.5/httplib.* ${libdir}/python2.5/mimetypes.* ${libdir}/python2.5/nntplib.* ${libdir}/python2.5/poplib.* ${libdir}/python2.5/smtplib.* ${libdir}/python2.5/telnetlib.* ${libdir}/python2.5/urllib.* ${libdir}/python2.5/urllib2.* ${libdir}/python2.5/urlparse.* "
DESCRIPTION_python-pprint="Python Pretty-Print Support"
-PR_python-pprint="ml5"
+PR_python-pprint="ml6"
RDEPENDS_python-pprint="python-core"
FILES_python-pprint="${libdir}/python2.5/pprint.* "
DESCRIPTION_python-netserver="Python Internet Protocol Servers"
-PR_python-netserver="ml5"
+PR_python-netserver="ml6"
RDEPENDS_python-netserver="python-core python-netclient"
FILES_python-netserver="${libdir}/python2.5/cgi.* ${libdir}/python2.5/BaseHTTPServer.* ${libdir}/python2.5/SimpleHTTPServer.* ${libdir}/python2.5/SocketServer.* "
DESCRIPTION_python-curses="Python Curses Support"
-PR_python-curses="ml5"
+PR_python-curses="ml6"
RDEPENDS_python-curses="python-core"
FILES_python-curses="${libdir}/python2.5/curses ${libdir}/python2.5/lib-dynload/_curses.so ${libdir}/python2.5/lib-dynload/_curses_panel.so "
DESCRIPTION_python-smtpd="Python Simple Mail Transport Daemon"
-PR_python-smtpd="ml5"
+PR_python-smtpd="ml6"
RDEPENDS_python-smtpd="python-core python-netserver python-email python-mime"
FILES_python-smtpd="${bindir}/smtpd.* "
DESCRIPTION_python-html="Python HTML Processing"
-PR_python-html="ml5"
+PR_python-html="ml6"
RDEPENDS_python-html="python-core"
FILES_python-html="${libdir}/python2.5/formatter.* ${libdir}/python2.5/htmlentitydefs.* ${libdir}/python2.5/htmllib.* ${libdir}/python2.5/markupbase.* ${libdir}/python2.5/sgmllib.* "
DESCRIPTION_python-readline="Python Readline Support"
-PR_python-readline="ml5"
+PR_python-readline="ml6"
RDEPENDS_python-readline="python-core"
FILES_python-readline="${libdir}/python2.5/lib-dynload/readline.so ${libdir}/python2.5/rlcompleter.* "
DESCRIPTION_python-subprocess="Python Subprocess Support"
-PR_python-subprocess="ml5"
+PR_python-subprocess="ml6"
RDEPENDS_python-subprocess="python-core python-io python-re python-fcntl python-pickle"
FILES_python-subprocess="${libdir}/python2.5/subprocess.* "
DESCRIPTION_python-pydoc="Python Interactive Help Support"
-PR_python-pydoc="ml5"
+PR_python-pydoc="ml6"
RDEPENDS_python-pydoc="python-core python-lang python-stringold python-re"
FILES_python-pydoc="${bindir}/pydoc ${libdir}/python2.5/pydoc.* "
DESCRIPTION_python-logging="Python Logging Support"
-PR_python-logging="ml5"
+PR_python-logging="ml6"
RDEPENDS_python-logging="python-core python-io python-lang python-stringold"
FILES_python-logging="${libdir}/python2.5/logging "
DESCRIPTION_python-mailbox="Python Mailbox Format Support"
-PR_python-mailbox="ml5"
+PR_python-mailbox="ml6"
RDEPENDS_python-mailbox="python-core python-mime"
FILES_python-mailbox="${libdir}/python2.5/mailbox.* "
DESCRIPTION_python-xml="Python basic XML support."
-PR_python-xml="ml5"
+PR_python-xml="ml6"
RDEPENDS_python-xml="python-core python-re python-netclient"
FILES_python-xml="${libdir}/python2.5/lib-dynload/pyexpat.so ${libdir}/python2.5/xml ${libdir}/python2.5/xmllib.* "
DESCRIPTION_python-mime="Python MIME Handling APIs"
-PR_python-mime="ml5"
+PR_python-mime="ml6"
RDEPENDS_python-mime="python-core python-io"
FILES_python-mime="${libdir}/python2.5/mimetools.* ${libdir}/python2.5/uu.* ${libdir}/python2.5/quopri.* ${libdir}/python2.5/rfc822.* "
DESCRIPTION_python-sqlite3="Python Sqlite3 Database Support"
-PR_python-sqlite3="ml5"
+PR_python-sqlite3="ml6"
RDEPENDS_python-sqlite3="python-core"
FILES_python-sqlite3="${libdir}/python2.5/sqlite3 "
DESCRIPTION_python-tests="Python Tests"
-PR_python-tests="ml5"
+PR_python-tests="ml6"
RDEPENDS_python-tests="python-core"
FILES_python-tests="${libdir}/python2.5/test "
DESCRIPTION_python-unittest="Python Unit Testing Framework"
-PR_python-unittest="ml5"
+PR_python-unittest="ml6"
RDEPENDS_python-unittest="python-core python-stringold python-lang"
FILES_python-unittest="${libdir}/python2.5/unittest.* "
DESCRIPTION_python-stringold="Python String APIs [deprecated]"
-PR_python-stringold="ml5"
+PR_python-stringold="ml6"
RDEPENDS_python-stringold="python-core python-re"
FILES_python-stringold="${libdir}/python2.5/lib-dynload/strop.so ${libdir}/python2.5/string.* "
DESCRIPTION_python-robotparser="Python robots.txt parser"
-PR_python-robotparser="ml5"
+PR_python-robotparser="ml6"
RDEPENDS_python-robotparser="python-core python-netclient"
FILES_python-robotparser="${libdir}/python2.5/robotparser.* "
DESCRIPTION_python-lib-old-and-deprecated="Python Deprecated Libraries"
-PR_python-lib-old-and-deprecated="ml5"
+PR_python-lib-old-and-deprecated="ml6"
RDEPENDS_python-lib-old-and-deprecated="python-core"
FILES_python-lib-old-and-deprecated="${libdir}/python2.5/lib-old "
DESCRIPTION_python-compile="Python Bytecode Compilation Support"
-PR_python-compile="ml5"
+PR_python-compile="ml6"
RDEPENDS_python-compile="python-core"
FILES_python-compile="${libdir}/python2.5/py_compile.* ${libdir}/python2.5/compileall.* "
DESCRIPTION_python-debugger="Python Debugger"
-PR_python-debugger="ml5"
+PR_python-debugger="ml6"
RDEPENDS_python-debugger="python-core python-io python-lang python-re python-stringold python-shell"
FILES_python-debugger="${libdir}/python2.5/bdb.* ${libdir}/python2.5/pdb.* "
DESCRIPTION_python-shell="Python Shell-Like Functionality"
-PR_python-shell="ml5"
+PR_python-shell="ml6"
RDEPENDS_python-shell="python-core python-re"
FILES_python-shell="${libdir}/python2.5/cmd.* ${libdir}/python2.5/commands.* ${libdir}/python2.5/dircache.* ${libdir}/python2.5/fnmatch.* ${libdir}/python2.5/glob.* ${libdir}/python2.5/popen2.* ${libdir}/python2.5/shutil.* "
DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
-PR_python-bsddb="ml5"
+PR_python-bsddb="ml6"
RDEPENDS_python-bsddb="python-core"
FILES_python-bsddb="${libdir}/python2.5/bsddb "
DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
-PR_python-mmap="ml5"
+PR_python-mmap="ml6"
RDEPENDS_python-mmap="python-core python-io"
FILES_python-mmap="${libdir}/python2.5/lib-dynload/mmap.so "
DESCRIPTION_python-zlib="Python zlib Support."
-PR_python-zlib="ml5"
+PR_python-zlib="ml6"
RDEPENDS_python-zlib="python-core"
FILES_python-zlib="${libdir}/python2.5/lib-dynload/zlib.so "
DESCRIPTION_python-db="Python File-Based Database Support"
-PR_python-db="ml5"
+PR_python-db="ml6"
RDEPENDS_python-db="python-core"
FILES_python-db="${libdir}/python2.5/anydbm.* ${libdir}/python2.5/dumbdbm.* ${libdir}/python2.5/whichdb.* "
DESCRIPTION_python-crypt="Python Basic Cryptographic and Hashing Support"
-PR_python-crypt="ml5"
+PR_python-crypt="ml6"
RDEPENDS_python-crypt="python-core"
FILES_python-crypt="${libdir}/python2.5/hashlib.* ${libdir}/python2.5/md5.* ${libdir}/python2.5/sha.* ${libdir}/python2.5/lib-dynload/crypt.so ${libdir}/python2.5/lib-dynload/_hashlib.so ${libdir}/python2.5/lib-dynload/_sha256.so ${libdir}/python2.5/lib-dynload/_sha512.so "
DESCRIPTION_python-idle="Python Integrated Development Environment"
-PR_python-idle="ml5"
+PR_python-idle="ml6"
RDEPENDS_python-idle="python-core python-tkinter"
FILES_python-idle="${bindir}/idle ${libdir}/python2.5/idlelib "
DESCRIPTION_python-lang="Python Low-Level Language Support"
-PR_python-lang="ml5"
+PR_python-lang="ml6"
RDEPENDS_python-lang="python-core"
FILES_python-lang="${libdir}/python2.5/lib-dynload/array.so ${libdir}/python2.5/lib-dynload/parser.so ${libdir}/python2.5/lib-dynload/operator.so ${libdir}/python2.5/lib-dynload/_weakref.so ${libdir}/python2.5/lib-dynload/itertools.so ${libdir}/python2.5/lib-dynload/collections.so ${libdir}/python2.5/lib-dynload/_bisect.so ${libdir}/python2.5/lib-dynload/_heapq.so ${libdir}/python2.5/atexit.* ${libdir}/python2.5/bisect.* ${libdir}/python2.5/code.* ${libdir}/python2.5/codeop.* ${libdir}/python2.5/dis.* ${libdir}/python2.5/heapq.* ${libdir}/python2.5/inspect.* ${libdir}/python2.5/keyword.* ${libdir}/python2.5/opcode.* ${libdir}/python2.5/repr.* ${libdir}/python2.5/token.* ${libdir}/python2.5/tokenize.* ${libdir}/python2.5/traceback.* ${libdir}/python2.5/linecache.* ${libdir}/python2.5/weakref.* "
DESCRIPTION_python-audio="Python Audio Handling"
-PR_python-audio="ml5"
+PR_python-audio="ml6"
RDEPENDS_python-audio="python-core"
FILES_python-audio="${libdir}/python2.5/wave.* ${libdir}/python2.5/chunk.* ${libdir}/python2.5/sndhdr.* ${libdir}/python2.5/lib-dynload/ossaudiodev.so ${libdir}/python2.5/lib-dynload/audioop.so "
diff --git a/packages/python/python-ecore_cvs.bb b/packages/python/python-ecore_cvs.bb
index 8f4db6382e..0ec598f5a0 100644
--- a/packages/python/python-ecore_cvs.bb
+++ b/packages/python/python-ecore_cvs.bb
@@ -1,7 +1,6 @@
require python-efl.inc
DEPENDS += "ecore"
-
-PR = "r2"
+PR = "r5"
do_stage() {
distutils_stage_all
diff --git a/packages/python/python-edbus_cvs.bb b/packages/python/python-edbus_cvs.bb
new file mode 100644
index 0000000000..7a4d53762f
--- /dev/null
+++ b/packages/python/python-edbus_cvs.bb
@@ -0,0 +1,9 @@
+require python-efl.inc
+# broken until someone adds dbus 1.1.x
+DEPENDS += "edbus dbus-1.1"
+
+PR = "r0"
+
+SRC_URI = "${E_CVS};module=e17/proto/python-efl/python-e_dbus"
+S = "${WORKDIR}/python-e_dbus"
+
diff --git a/packages/python/python-edje_cvs.bb b/packages/python/python-edje_cvs.bb
index dfd9722f32..1205e7ec84 100644
--- a/packages/python/python-edje_cvs.bb
+++ b/packages/python/python-edje_cvs.bb
@@ -1,5 +1,4 @@
require python-efl.inc
DEPENDS += "edje python-evas"
-
-PR = "r1"
+PR = "r5"
diff --git a/packages/python/python-efl-examples.bb b/packages/python/python-efl-examples.bb
new file mode 100644
index 0000000000..0a4e32097f
--- /dev/null
+++ b/packages/python/python-efl-examples.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Python Examples for the Enlightenment Foundation Libraries"
+LICENSE = "MIT"
+SECTION = "devel/python"
+RDEPENDS = "\
+ python-efl python-ecore-examples python-emotion-examples python-edje-examples python-epsilon-examples \
+ python-math python-textutils \
+"
+PR = "ml2"
+
+ALLOW_EMPTY = "1"
diff --git a/packages/python/python-efl.bb b/packages/python/python-efl.bb
index c667ceff11..ec5e9cd7e2 100644
--- a/packages/python/python-efl.bb
+++ b/packages/python/python-efl.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Python Bindings to the Enlightenment Foundation Libraries"
LICENSE = "MIT"
SECTION = "devel/python"
-DEPENDS = "python-evas python-ecore python-emotion python-edje python-epsilon"
+RDEPENDS = "python-evas python-ecore python-emotion python-edje python-epsilon"
+PR = "ml1"
ALLOW_EMPTY = "1"
-
diff --git a/packages/python/python-efl.inc b/packages/python/python-efl.inc
index 727c718bd2..e6cc62df5e 100644
--- a/packages/python/python-efl.inc
+++ b/packages/python/python-efl.inc
@@ -5,6 +5,7 @@ HOMEPAGE = "http://www.enlightenment.org"
# somewhere is a bug. cython should be self-contained, but somehow this
# does not compile unless pyrex has been built
DEPENDS = "python-cython-native python-pyrex-native python-numeric"
+RDEPENDS += "python-lang"
PV = "0.1.1+cvs${SRCDATE}"
inherit setuptools
@@ -12,5 +13,25 @@ inherit setuptools
SRC_URI = "${E_CVS};module=e17/proto/python-efl/${PN}"
S = "${WORKDIR}/${PN}"
+do_install_append() {
+ if [ -e examples ]; then
+ for i in `find examples -name "*.edc"`; do
+ pushd `dirname $i`
+ echo "Generating .edj file for $i..."
+ edje_cc `basename $i`
+ echo "Removing sources in this directory..."
+ rm -f *.edc *.png *.ttf *.jpeg
+ popd
+ done
+ install -d ${D}${datadir}/${PN}/
+ cp -a examples ${D}${datadir}/${PN}/
+ find ${D}${datadir}/${PN}/examples -name "CVS" | xargs rm -rf
+ find ${D}${datadir}/${PN}/examples -name ".cvsignore" | xargs rm -f
+ fi
+}
+
FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*.egg/*/*/.debug"
+PACKAGES += "${PN}-examples"
+FILES_${PN}-examples = "${datadir}/${PN}/examples"
+
diff --git a/packages/python/python-emotion_cvs.bb b/packages/python/python-emotion_cvs.bb
index 79c7f9633b..d3f5109d86 100644
--- a/packages/python/python-emotion_cvs.bb
+++ b/packages/python/python-emotion_cvs.bb
@@ -1,4 +1,3 @@
require python-efl.inc
DEPENDS += "emotion python-evas"
-
-PR = "r1"
+PR = "r4"
diff --git a/packages/python/python-epsilon_cvs.bb b/packages/python/python-epsilon_cvs.bb
index 81ebfcb0c7..204dd95610 100644
--- a/packages/python/python-epsilon_cvs.bb
+++ b/packages/python/python-epsilon_cvs.bb
@@ -1,4 +1,3 @@
require python-efl.inc
DEPENDS += "epsilon python-ecore"
-
-PR = "r0"
+PR = "r4"
diff --git a/packages/python/python-evas_cvs.bb b/packages/python/python-evas_cvs.bb
index ff14d95667..e0de4569bd 100644
--- a/packages/python/python-evas_cvs.bb
+++ b/packages/python/python-evas_cvs.bb
@@ -1,7 +1,6 @@
require python-efl.inc
DEPENDS += "evas"
-
-PR = "r2"
+PR = "r4"
do_stage() {
distutils_stage_all
diff --git a/packages/python/python_2.5.1.bb b/packages/python/python_2.5.1.bb
index 8ad4e797c0..37f7bdefb8 100644
--- a/packages/python/python_2.5.1.bb
+++ b/packages/python/python_2.5.1.bb
@@ -7,7 +7,7 @@ DEPENDS = "python-native readline zlib gdbm openssl sqlite3 tcl tk"
DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
# NOTE: Keep the digit in sync with BASEREV in contrib/generate-manifest-2.5.py
-PR = "ml5"
+PR = "ml6"
PYTHON_MAJMIN = "2.5"
@@ -79,7 +79,7 @@ do_install() {
require python-${PYTHON_MAJMIN}-manifest.inc
RPROVIDES_python-core = "python"
-RPROVIDES_python-curses = "python"
+RRECOMMENDS_python-core = "python-readline"
PACKAGES =+ "libpython2"
FILES_libpython2 = "${libdir}/libpython*"
diff --git a/packages/qpf-fonts/qpf-unismall_1.0.0.bb b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
index 20f47f9665..7dd724d306 100644
--- a/packages/qpf-fonts/qpf-unismall_1.0.0.bb
+++ b/packages/qpf-fonts/qpf-unismall_1.0.0.bb
@@ -4,7 +4,7 @@ PRIORITY = "optional"
LICENSE = "GPL"
HOMEPAGE = "http://sourceforge.jp/projects/zaurus-ja/"
RPROVIDES = "virtual/japanese-font"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://osdn.dl.sourceforge.jp/zaurus-ja/773/unismall-${PV}.tar.gz"
@@ -22,3 +22,5 @@ do_install () {
}
inherit qpf
+
+PACKAGE_ARCH = "all"
diff --git a/packages/quilt/quilt-0.45/non-gnu.patch b/packages/quilt/files/non-gnu.patch
index c1cbfb3983..c1cbfb3983 100644
--- a/packages/quilt/quilt-0.45/non-gnu.patch
+++ b/packages/quilt/files/non-gnu.patch
diff --git a/packages/quilt/files/install.patch b/packages/quilt/quilt-0.45/install.patch
index 4122370d6a..4122370d6a 100644
--- a/packages/quilt/files/install.patch
+++ b/packages/quilt/quilt-0.45/install.patch
diff --git a/packages/quilt/quilt-0.46/.mtn2git_empty b/packages/quilt/quilt-0.46/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/quilt/quilt-0.46/.mtn2git_empty
diff --git a/packages/quilt/quilt-0.46/aclocal.patch b/packages/quilt/quilt-0.46/aclocal.patch
new file mode 100644
index 0000000000..1245f74922
--- /dev/null
+++ b/packages/quilt/quilt-0.46/aclocal.patch
@@ -0,0 +1,126 @@
+Add the aclocal.m4 as acinclude.m4
+
+Index: quilt-0.46/acinclude.m4
+===================================================================
+--- /dev/null
++++ quilt-0.46/acinclude.m4
+@@ -0,0 +1,119 @@
++dnl Allow configure to specify a specific binary
++dnl 1: Environment variable
++dnl 2: binary name
++dnl 3: optional list of alternative binary names
++dnl 4: optional list of additional search directories
++AC_DEFUN([QUILT_COMPAT_PROG_PATH],[
++ m4_define([internal_$2_cmd],[esyscmd(ls compat/$2.in 2>/dev/null)])
++
++ AC_ARG_WITH($2, AC_HELP_STRING(
++ [--with-$2], [name of the $2 executable to use]
++ m4_if(internal_$2_cmd,[],[],[ (use --without-$2
++ to use an internal mechanism)])),
++ [
++ if test x"$withval" = xnone; then
++ AC_MSG_ERROR([Invalid configure argument. use --without-$2])
++ fi
++ if test x"$withval" != xno; then
++ AC_MSG_CHECKING(for $2)
++ $1="$withval"
++ if test -e "$$1"; then
++ if test ! -f "$$1" -a ! -h "$$1" || test ! -x "$$1"; then
++ AC_MSG_ERROR([$$1 is not an executable file])
++ fi
++ fi
++ AC_MSG_RESULT([$$1])
++ if test ! -e "$$1"; then
++ AC_MSG_WARN([$$1 does not exist])
++ fi
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ fi
++ ],[
++ m4_if([$3],[],[
++ AC_PATH_PROG($1,$2,,$PATH:$4)
++ ],[
++ AC_PATH_PROGS($1,$3,,$PATH:$4)
++ if test -n "$$1" -a "`expr "$$1" : '.*/\([[^/]]*\)$'`" != "$2"; then
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ fi
++ ])
++ m4_if([$4],[],[],[
++ if test -n "$$1"; then
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++ for dir in "$4"; do
++ if test "`dirname $$1`" = "$dir"; then
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ break
++ fi
++ done
++ IFS="$as_save_IFS"
++ fi
++ ])
++ ])
++ if test -z "$$1"; then
++ m4_if(internal_$2_cmd,[],[
++ AC_MSG_ERROR([Please specify the location of $2 with the option '--with-$2'])
++ ],[
++ AC_MSG_WARN([Using internal $2 mechanism. Use option '--with-$2' to override])
++ COMPAT_PROGRAMS="$COMPAT_PROGRAMS $2"
++ $1=$2
++ INTERNAL_$1=1
++ ])
++ fi
++ AC_SUBST($1)
++])
++
++dnl Allow configure to specify a specific binary
++dnl This variant is for optional binaries.
++dnl 1: Environment variable
++dnl 2: binary name
++dnl 3: optional list of alternative binary names
++dnl 4: optional list of additional search directories
++AC_DEFUN([QUILT_COMPAT_PROG_PATH_OPT],[
++ AC_ARG_WITH($2, AC_HELP_STRING(
++ [--with-$2], [name of the $2 executable to use]),
++ [
++ if test x"$withval" != xno; then
++ AC_MSG_CHECKING(for $2)
++ $1="$withval"
++ if test -e "$$1"; then
++ if test ! -f "$$1" -a ! -h "$$1" || test ! -x "$$1"; then
++ AC_MSG_ERROR([$$1 is not an executable file])
++ fi
++ fi
++ AC_MSG_RESULT([$$1])
++ if test ! -e "$$1"; then
++ AC_MSG_WARN([$$1 does not exist])
++ fi
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ fi
++ ],[
++ m4_if([$3],[],[
++ AC_PATH_PROG($1,$2,,$PATH:$4)
++ ],[
++ AC_PATH_PROGS($1,$3,,$PATH:$4)
++ if test -n "$$1" -a "`expr "$$1" : '.*/\([[^/]]*\)$'`" != "$2"; then
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ fi
++ ])
++ m4_if([$4],[],[],[
++ if test -n "$$1"; then
++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++ for dir in "$4"; do
++ if test "`dirname $$1`" = "$dir"; then
++ COMPAT_SYMLINKS="$COMPAT_SYMLINKS $2"
++ break
++ fi
++ done
++ IFS="$as_save_IFS"
++ fi
++ ])
++ if test -z "$$1"; then
++ AC_MSG_WARN([$2 not found, some optional functionalities will be missing])
++ fi
++ ])
++ if test -z "$$1"; then
++ $1=$2
++ fi
++ AC_SUBST($1)
++])
diff --git a/packages/quilt/quilt-0.46/install.patch b/packages/quilt/quilt-0.46/install.patch
new file mode 100644
index 0000000000..3c9030d377
--- /dev/null
+++ b/packages/quilt/quilt-0.46/install.patch
@@ -0,0 +1,13 @@
+Index: quilt-0.46/Makefile.in
+===================================================================
+--- quilt-0.46.orig/Makefile.in
++++ quilt-0.46/Makefile.in
+@@ -12,7 +12,7 @@ datadir := @datadir@
+ docdir := @docdir@
+ mandir := @mandir@
+ localedir := $(datadir)/locale
+-etcdir := $(subst /usr/etc,/etc,$(prefix)/etc)
++etcdir := @sysconfdir@
+
+ INSTALL := @INSTALL@
+ POD2MAN := @POD2MAN@
diff --git a/packages/quilt/quilt-native.inc b/packages/quilt/quilt-native.inc
index 5861b2229c..f815969344 100644
--- a/packages/quilt/quilt-native.inc
+++ b/packages/quilt/quilt-native.inc
@@ -1,4 +1,4 @@
-require quilt_${PV}.inc
+require quilt.inc
SRC_URI_append_build-darwin = "? file://non-gnu.patch;patch=1 "
RDEPENDS_${PN} = "diffstat-native patch-native bzip2-native util-linux-native"
diff --git a/packages/quilt/quilt-native_0.45.bb b/packages/quilt/quilt-native_0.45.bb
index 033f323a13..302df25afd 100644
--- a/packages/quilt/quilt-native_0.45.bb
+++ b/packages/quilt/quilt-native_0.45.bb
@@ -1,2 +1 @@
-PV="0.45"
require quilt-native.inc
diff --git a/packages/quilt/quilt-native_0.46.bb b/packages/quilt/quilt-native_0.46.bb
new file mode 100644
index 0000000000..302df25afd
--- /dev/null
+++ b/packages/quilt/quilt-native_0.46.bb
@@ -0,0 +1 @@
+require quilt-native.inc
diff --git a/packages/quilt/quilt-package.inc b/packages/quilt/quilt-package.inc
index bcdbcf026a..900884b917 100644
--- a/packages/quilt/quilt-package.inc
+++ b/packages/quilt/quilt-package.inc
@@ -1,10 +1,21 @@
+require quilt.inc
+
+RDEPENDS_${PN} += "patch diffstat bzip2 util-linux"
+
+SRC_URI += "file://aclocal.patch;patch=1"
+
+inherit autotools gettext
+
+do_install () {
+ oe_runmake 'BUILD_ROOT=${D}' install
+
+ # Remove the compat symlinks
+ rm -rf "${D}"/usr/share/quilt/compat
+}
+
PACKAGES += "guards guards-doc"
FILES_${PN} = "${sysconfdir} ${datadir}/quilt \
${bindir}/quilt ${libdir}/quilt"
FILES_guards = "${bindir}/guards"
FILES_${PN}-doc = "${mandir}/man1/quilt.1 ${docdir}/${P}"
FILES_guards-doc = "${mandir}/man1/guards.1"
-
-do_install () {
- oe_runmake 'BUILD_ROOT=${D}' install
-}
diff --git a/packages/quilt/quilt.inc b/packages/quilt/quilt.inc
index ee90455fca..33bc0f62ea 100644
--- a/packages/quilt/quilt.inc
+++ b/packages/quilt/quilt.inc
@@ -2,8 +2,9 @@ DESCRIPTION = "Tool to work with series of patches."
HOMEPAGE = "http://savannah.nongnu.org/projects/quilt/"
SECTION = "devel"
LICENSE = "GPL"
-PR = "r1"
+PR = "r2"
-SRC_URI = "http://download.savannah.gnu.org/releases/quilt/quilt-${PV}.tar.gz "
+SRC_URI = "http://download.savannah.gnu.org/releases/quilt/quilt-${PV}.tar.gz \
+ file://install.patch;patch=1"
S = "${WORKDIR}/quilt-${PV}"
diff --git a/packages/quilt/quilt_0.45.bb b/packages/quilt/quilt_0.45.bb
index d809c83518..de38f64782 100644
--- a/packages/quilt/quilt_0.45.bb
+++ b/packages/quilt/quilt_0.45.bb
@@ -1,9 +1 @@
-RDEPENDS_${PN} += "patch diffstat bzip2 util-linux"
-
-require quilt_${PV}.inc
-
-SRC_URI += "file://aclocal.patch;patch=1"
-
-inherit autotools gettext
-
require quilt-package.inc
diff --git a/packages/quilt/quilt_0.45.inc b/packages/quilt/quilt_0.45.inc
deleted file mode 100644
index bf6267b56c..0000000000
--- a/packages/quilt/quilt_0.45.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-require quilt.inc
-
-SRC_URI += "file://install.patch;patch=1"
diff --git a/packages/quilt/quilt_0.46.bb b/packages/quilt/quilt_0.46.bb
new file mode 100644
index 0000000000..de38f64782
--- /dev/null
+++ b/packages/quilt/quilt_0.46.bb
@@ -0,0 +1 @@
+require quilt-package.inc
diff --git a/packages/roadmap/files/options.mk.patch b/packages/roadmap/files/options.mk.patch
new file mode 100644
index 0000000000..196f16e31d
--- /dev/null
+++ b/packages/roadmap/files/options.mk.patch
@@ -0,0 +1,34 @@
+--- roadmap-1.1.0/src/options.mk.old 2008-01-09 22:08:00.000000000 -0600
++++ roadmap-1.1.0/src/options.mk 2008-01-09 23:06:29.000000000 -0600
+@@ -177,10 +177,7 @@ ifeq ($(strip $(AGG)),NO)
+ else
+ LIBS += -laggfontfreetype -lagg -lfreetype
+ CFLAGS += -DAGG_PIXFMT=pixfmt_$(AGG) \
+- -I$(TOP)/agg_support \
+- -I/usr/include/agg2 \
+- -I/usr/local/include/agg2 \
+- -I/usr/include/freetype2
++ -I$(TOP)/agg_support
+ CANVAS_OBJS = roadmap_canvas_agg.o \
+ $(TOP)/agg_support/roadmap_canvas.o
+ endif
+@@ -188,7 +185,7 @@ endif
+ # bidirectional text lib
+ ifneq ($(strip $(BIDI)),NO)
+ LIBS += -lfribidi
+- CFLAGS += -DUSE_FRIBIDI -I/usr/include/fribidi
++ CFLAGS += -DUSE_FRIBIDI
+ endif
+
+ # RoadMap internal profiling
+@@ -205,8 +202,8 @@ else
+ endif
+
+
+-CFLAGS += -I$(TOP) -I/usr/local/include -DNDEBUG
++CFLAGS += -I$(TOP) -DNDEBUG
+
+-LIBS := -L/usr/local/lib $(LIBS) -lm
++LIBS := $(LIBS) -lm
+
+ CXXFLAGS = $(CFLAGS)
diff --git a/packages/roadmap/files/roadmap_path.patch b/packages/roadmap/files/roadmap_path.patch
new file mode 100644
index 0000000000..7a7ab74261
--- /dev/null
+++ b/packages/roadmap/files/roadmap_path.patch
@@ -0,0 +1,57 @@
+--- src/unix/roadmap_path.c.old 2008-01-12 21:08:03.000000000 -0600
++++ src/unix/roadmap_path.c 2008-01-12 21:29:40.000000000 -0600
+@@ -93,23 +93,18 @@ static const char *RoadMapPathConfig[] =
+ "/opt/QtPalmtop/share/roadmap",
+ "/mnt/cf/QtPalmtop/share/roadmap",
+ "/mnt/card/QtPalmtop/share/roadmap",
+-#else
++#endif
+ /* This is for standard Unix configurations. */
+ "/etc/roadmap",
+ "/usr/local/share/roadmap",
+ "/usr/share/roadmap",
+-#endif
+ NULL
+ };
+ static const char *RoadMapPathConfigPreferred =
+ #ifdef ROADMAP_CONFIG_DIR
+ ROADMAP_CONFIG_DIR;
+ #else
+-#ifdef QWS
+- "/mnt/cf/QtPalmtop/share/roadmap";
+-#else
+- "/usr/local/share/roadmap";
+-#endif
++ "/usr/share/roadmap";
+ #endif
+
+
+@@ -123,7 +118,7 @@ static const char *RoadMapPathMaps[] = {
+ "/opt/QtPalmtop/share/roadmap/...",
+ "/mnt/cf/QtPalmtop/share/roadmap/...",
+ "/mnt/card/QtPalmtop/share/roadmap/...",
+-#else
++#endif
+ /* This is for standard Unix configurations. */
+ "&/maps/...",
+ "/var/lib/roadmap/...",
+@@ -134,19 +129,14 @@ static const char *RoadMapPathMaps[] = {
+ */
+ "/usr/local/share/roadmap/...",
+ "/usr/share/roadmap/...",
+-#endif
+ NULL
+ };
+ static const char *RoadMapPathMapsPreferred =
+ #ifdef ROADMAP_MAP_DIR
+ ROADMAP_MAP_DIR;
+ #else
+-#ifdef QWS
+- "/mnt/cf/QtPalmtop/share/roadmap";
+-#else
+ "/var/lib/roadmap";
+ #endif
+-#endif
+
+ /* The default path for the icon files (the "icons" path): */
+ static const char *RoadMapPathIcons[] = {
diff --git a/packages/roadmap/roadmap-gtk2-1.0.12/roadgps.desktop.patch b/packages/roadmap/roadmap-gtk2-1.0.12/roadgps.desktop.patch
deleted file mode 100644
index 8f79b5503f..0000000000
--- a/packages/roadmap/roadmap-gtk2-1.0.12/roadgps.desktop.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/qt/ipkg/zroadgps.desktop.old 2007-12-24 19:35:34.000000000 -0600
-+++ src/qt/ipkg/zroadgps.desktop 2007-12-24 19:37:12.000000000 -0600
-@@ -1,6 +1,7 @@
- [Desktop Entry]
- Comment=RoadMap
- Exec=roadgps
--Icon=zroadgps
-+Icon=roadgps
- Type=Application
- Name=RoadMapGPS
-+Categories=Graphics;Viewer;GTK;
diff --git a/packages/roadmap/roadmap-gtk2.inc b/packages/roadmap/roadmap-gtk2.inc
new file mode 100644
index 0000000000..6d0db5099b
--- /dev/null
+++ b/packages/roadmap/roadmap-gtk2.inc
@@ -0,0 +1,11 @@
+require roadmap.inc
+
+SECTION = "x11/applications"
+
+DEPENDS += "agg gtk+"
+
+EXTRA_OEMAKE = "DESKTOP=GTK2 AGG=rgb565 \
+ POPT=NO SCRIPTS= BUILD= INSTALLDIR=/usr DESTDIR=${D} \
+ desktopdir=${D}${datadir}/applications"
+
+CFLAGS += " -I${STAGING_INCDIR}/agg2 "
diff --git a/packages/roadmap/roadmap-gtk2_1.0.12.bb b/packages/roadmap/roadmap-gtk2_1.0.12.bb
deleted file mode 100644
index e2ce5f2316..0000000000
--- a/packages/roadmap/roadmap-gtk2_1.0.12.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-require roadmap.inc
-
-DEPENDS = "gtk+"
-PR = "r0"
-
-SRC_URI = "http://www.roadmap.digitalomaha.net/roadmap/roadmap_1_0_12p2_src.tar.gz \
- file://roadmap.desktop.patch;patch=1 \
- file://roadgps.desktop.patch;patch=1 \
- http://www.roadmap.digitalomaha.net/maps-1.0.12/usdir.rdm.tgz \
- file://zroadgps.png "
-
-S = "${WORKDIR}/roadmap-${PV}/src"
-
-DESKTOP = "GTK2"
-CFLAGS += " -I${STAGING_INCDIR}/atk-1.0 -I${STAGING_INCDIR}/cairo -I${STAGING_INCDIR}/pango-1.0 \
- -I${STAGING_INCDIR}/glib-2.0 -I${STAGING_INCDIR}/gtk-2.0 -I${STAGING_LIBDIR}/gtk-2.0/include -I${S} "
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a unix/libosroadmap.a
- cd gtk2 && oe_runmake
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -d ${D}${datadir}/roadmap
-
- install -m 0755 gtk2/gtkroadmap ${D}${bindir}/roadmap
- install -m 0755 gtk2/gtkroadgps ${D}${bindir}/roadgps
-
- install -m 0644 icons/*png ${D}${datadir}/pixmaps/
- install -m 0644 roadmap.png ${D}${datadir}/pixmaps/
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${datadir}/pixmaps/roadgps.png
-
- install -m 0644 roadmap.desktop ${D}${datadir}/applications/
- install -m 0644 qt/ipkg/zroadgps.desktop ${D}${datadir}/applications/roadgps.desktop
-
- install -m 0644 sprites schema preferences ${D}${datadir}/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${datadir}/roadmap/
-}
-
-FILES_${PN} += "${datadir}/roadmap"
-
diff --git a/packages/roadmap/roadmap-gtk2_1.1.0.bb b/packages/roadmap/roadmap-gtk2_1.1.0.bb
index f638cf1fdd..1e34238106 100644
--- a/packages/roadmap/roadmap-gtk2_1.1.0.bb
+++ b/packages/roadmap/roadmap-gtk2_1.1.0.bb
@@ -1,46 +1,12 @@
-require roadmap.inc
+require roadmap-gtk2.inc
-DEPENDS = "agg expat gtk+"
-PR = "r0"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/roadmap/roadmap-${PV}-src.tar.gz \
file://cross.patch;patch=1;pnum=2 \
+ file://options.mk.patch;patch=1;pnum=2 \
+ file://roadmap_path.patch;patch=1 \
file://roadmap.desktop.patch;patch=1 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tgz \
- file://zroadgps.png"
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tgz "
S = "${WORKDIR}/roadmap-${PV}/src"
-
-DESKTOP = "GTK2"
-POPT = "NO"
-AGG = "rgba32"
-CFLAGS += " -I${STAGING_INCDIR}/atk-1.0 -I${STAGING_INCDIR}/cairo -I${STAGING_INCDIR}/pango-1.0 \
- -I${STAGING_INCDIR}/glib-2.0 -I${STAGING_INCDIR}/gtk-2.0 -I${STAGING_LIBDIR}/gtk-2.0/include -I${S} "
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a
- oe_runmake -C gpx libgpx.a
- oe_runmake -C unix libosroadmap.a
- oe_runmake -C gtk2 gtkroadmap gtkroadgps
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -d ${D}${datadir}/roadmap
-
- install -m 0755 gtk2/gtkroadmap ${D}${bindir}/roadmap
- install -m 0755 gtk2/gtkroadgps ${D}${bindir}/roadgps
-
- install -m 0644 icons/*png ${D}${datadir}/pixmaps/
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${datadir}/pixmaps/roadgps.png
-
- install -m 0644 roadmap.desktop ${D}${datadir}/applications/
-
- install -m 0644 sprites preferences ${D}${datadir}/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${datadir}/roadmap/
-}
-
-FILES_${PN} += "${datadir}/roadmap"
-
diff --git a/packages/roadmap/roadmap-gtk2_cvs.bb b/packages/roadmap/roadmap-gtk2_cvs.bb
index 2ece0de929..9d7adbaa3e 100644
--- a/packages/roadmap/roadmap-gtk2_cvs.bb
+++ b/packages/roadmap/roadmap-gtk2_cvs.bb
@@ -1,45 +1,13 @@
-require roadmap.inc
+require roadmap-gtk2.inc
-DEPENDS = "agg expat gtk+"
-PV = "1.1.0+cvs${SRCDATE}"
-PR = "r0"
+PV = "0.0+cvs${SRCDATE}"
+PR = "r1"
SRC_URI = "cvs://anonymous:@roadmap.cvs.sf.net/cvsroot/roadmap;module=roadmap \
file://cross.patch;patch=1;pnum=2 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tgz \
- file://zroadgps.png"
+ file://options.mk.patch;patch=1;pnum=2 \
+ file://roadmap_path.patch;patch=1 \
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tgz "
S = "${WORKDIR}/roadmap/src"
-DESKTOP = "GTK2"
-AGG = "rgba32"
-CFLAGS += " -I${STAGING_INCDIR}/atk-1.0 -I${STAGING_INCDIR}/cairo -I${STAGING_INCDIR}/pango-1.0 \
- -I${STAGING_INCDIR}/glib-2.0 -I${STAGING_INCDIR}/gtk-2.0 -I${STAGING_LIBDIR}/gtk-2.0/include -I${S} "
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a
- oe_runmake -C gpx libgpx.a
- oe_runmake -C unix libosroadmap.a
- oe_runmake -C gtk2 gtkroadmap gtkroadgps
-}
-
-do_install() {
- install -d ${D}${bindir}
- install -d ${D}${datadir}/applications
- install -d ${D}${datadir}/pixmaps
- install -d ${D}${datadir}/roadmap
-
- install -m 0755 gtk2/gtkroadmap ${D}${bindir}/roadmap
- install -m 0755 gtk2/gtkroadgps ${D}${bindir}/roadgps
-
- install -m 0644 icons/*png ${D}${datadir}/pixmaps/
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${datadir}/pixmaps/roadgps.png
-
- install -m 0644 roadmap.desktop ${D}${datadir}/applications/
-
- install -m 0644 sprites preferences ${D}${datadir}/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${datadir}/roadmap/
-}
-
-FILES_${PN} += "${datadir}/roadmap"
-
diff --git a/packages/roadmap/roadmap.inc b/packages/roadmap/roadmap.inc
index e9598df178..43b4b1cd3d 100644
--- a/packages/roadmap/roadmap.inc
+++ b/packages/roadmap/roadmap.inc
@@ -4,5 +4,15 @@ AUTHOR = "Pascal Martin <pascal.martin@iname.com>"
HOMEPAGE = "http://roadmap.digitalomaha.net/maps.html"
LICENSE = "GPL"
RRECOMMENDS = "gpsd flite"
+DEPENDS = "expat"
-PARALLEL_MAKE = ""
+FILES_${PN} += "${datadir}/roadmap"
+
+do_compile() {
+ oe_runmake runtime ${TOOLS} icons
+}
+
+do_install() {
+ oe_runmake install
+ install -m 0644 ${WORKDIR}/usdir.rdm ${D}${datadir}/roadmap/
+}
diff --git a/packages/roadmap/zroadmap-1.0.12/qt2-fixes.patch b/packages/roadmap/zroadmap-1.0.12/qt2-fixes.patch
deleted file mode 100644
index 46b17b8cfb..0000000000
--- a/packages/roadmap/zroadmap-1.0.12/qt2-fixes.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- roadmap-1.0.12/src/qt/qt_main.cc~qt2-fixes
-+++ roadmap-1.0.12/src/qt/qt_main.cc
-@@ -123,7 +123,7 @@
- switch (orientation[0]) {
- case 't':
- case 'T': break;
--
-+#ifndef QWS
- case 'b':
- case 'B': moveDockWindow (toolBar, DockBottom); break;
-
-@@ -132,7 +132,7 @@
-
- case 'r':
- case 'R': moveDockWindow (toolBar, DockRight); break;
--
-+#endif
- default: roadmap_log (ROADMAP_FATAL,
- "Invalid toolbar orientation %s", orientation);
- }
diff --git a/packages/roadmap/zroadmap.inc b/packages/roadmap/zroadmap.inc
index acee708837..3c99f9d234 100644
--- a/packages/roadmap/zroadmap.inc
+++ b/packages/roadmap/zroadmap.inc
@@ -1,5 +1,7 @@
require roadmap.inc
+PARALLEL_MAKE = ""
+
SECTION = "opie/applications"
inherit palmtop
@@ -7,7 +9,15 @@ inherit palmtop
QT_LIBRARY = '${@base_conditional("PALMTOP_USE_MULTITHREADED_QT", "yes", "qte-mt", "qte",d)}'
QT_LIBRARY_append_c7x0 = " -laticore"
+EXTRA_OEMAKE = "DESKTOP=QPE MOC=${OE_QMAKE_MOC} UIC=${OE_QMAKE_UIC} QTDIR=${QTDIR} \
+ POPT=NO SCRIPTS= BUILD= INSTALLDIR=/usr DESTDIR=${D} \
+ icondir=${D}${palmtopdir}/pics \
+ desktopdir=${D}${palmtopdir}/apps/Applications \
+ CFLAGS="-DQWS -I${S} ${OE_QMAKE_CFLAGS} -I${OE_QMAKE_INCDIR_QT}" \
+ LDFLAGS="${OE_QMAKE_LDFLAGS} -L${OE_QMAKE_LIBDIR_QT} -Wl,-rpath-link,${OE_QMAKE_LIBDIR_QT}""
+
do_configure() {
echo removing pregenerated stuff
find . -name "moc*"|xargs rm -f
}
+
diff --git a/packages/roadmap/zroadmap_1.0.12.bb b/packages/roadmap/zroadmap_1.0.12.bb
deleted file mode 100644
index c7fc851d0d..0000000000
--- a/packages/roadmap/zroadmap_1.0.12.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-require zroadmap.inc
-
-PR = "r1"
-
-SRC_URI = "http://www.roadmap.digitalomaha.net/roadmap/roadmap_1_0_12p2_src.tar.gz \
- file://qt2-fixes.patch;pnum=2;patch=1 \
- http://www.roadmap.digitalomaha.net/maps-1.0.12/usdir.rdm.tgz \
- file://zroadgps.png"
-
-S = "${WORKDIR}/roadmap-${PV}/src"
-
-EXTRA_OEMAKE = 'DESKTOP=QPE MOC=${OE_QMAKE_MOC} UIC=${OE_QMAKE_UIC} \
- GUICFLAGS="-I${OE_QMAKE_INCDIR_QT} -I${S} -DQWS" \
- GUILDFLAGS="-lz -lpng -ljpeg -lts -l${QT_LIBRARY} -lqpe -Wl,-rpath-link,${STAGING_LIBDIR} -L${STAGING_LIBDIR} -L${QTDIR}/lib"'
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a unix/libosroadmap.a
- cd qt && oe_runmake
-}
-
-do_install() {
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/apps/Applications
- install -d ${D}${palmtopdir}/pics
- install -d ${D}${palmtopdir}/share/roadmap
-
- install -m 0755 qt/qtroadmap ${D}${palmtopdir}/bin/roadmap
- install -m 0755 qt/qtroadgps ${D}${palmtopdir}/bin/roadgps
-
- install -m 0644 icons/*.png ${D}${palmtopdir}/pics/
- install -m 0644 roadmap.png ${D}${palmtopdir}/pics/zroadmap.png
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${palmtopdir}/pics/zroadgps.png
-
- install -m 0644 qt/ipkg/*.desktop ${D}${palmtopdir}/apps/Applications/
-
- install -m 0644 sprites schema preferences ${D}${palmtopdir}/share/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${palmtopdir}/share/roadmap/
-}
diff --git a/packages/roadmap/zroadmap_1.1.0.bb b/packages/roadmap/zroadmap_1.1.0.bb
index bafcc7c27d..b06e4e7ad0 100644
--- a/packages/roadmap/zroadmap_1.1.0.bb
+++ b/packages/roadmap/zroadmap_1.1.0.bb
@@ -1,45 +1,16 @@
require zroadmap.inc
-DEPENDS = "expat"
-PR = "r1"
+PR = "r2"
SRC_URI = "${SOURCEFORGE_MIRROR}/roadmap/roadmap-${PV}-src.tar.gz \
file://cross.patch;patch=1;pnum=2 \
+ file://options.mk.patch;patch=1;pnum=2 \
file://qt/qt2-fixes.patch;patch=1 \
file://qt/qt_canvas.patch;patch=1 \
file://qt/qt_main.patch;patch=1 \
file://qt/roadmap_main.patch;patch=1 \
+ file://roadmap_path.patch;patch=1 \
file://roadmap.desktop.patch;patch=1 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz \
- file://zroadgps.png"
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz"
S = "${WORKDIR}/roadmap-${PV}/src"
-
-EXTRA_OEMAKE = 'DESKTOP=QPE MOC=${OE_QMAKE_MOC} UIC=${OE_QMAKE_UIC} QTDIR=${QTDIR} POPT=NO \
- CFLAGS="-DQWS -I${S} ${OE_QMAKE_CFLAGS} -I${OE_QMAKE_INCDIR_QT}" \
- LDFLAGS="${OE_QMAKE_LDFLAGS} -L${OE_QMAKE_LIBDIR_QT} -Wl,-rpath-link,${OE_QMAKE_LIBDIR_QT}" '
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a
- oe_runmake -C gpx libgpx.a
- oe_runmake -C unix libosroadmap.a
- oe_runmake -C qt qtroadmap qtroadgps
-}
-
-do_install() {
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/apps/Applications
- install -d ${D}${palmtopdir}/pics
- install -d ${D}${palmtopdir}/share/roadmap
-
- install -m 0755 qt/qtroadmap ${D}${palmtopdir}/bin/roadmap
- install -m 0755 qt/qtroadgps ${D}${palmtopdir}/bin/roadgps
-
- install -m 0644 icons/*.png ${D}${palmtopdir}/pics/
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${palmtopdir}/pics/zroadgps.png
-
- install -m 0644 *.desktop ${D}${palmtopdir}/apps/Applications/
-
- install -m 0644 sprites preferences ${D}${palmtopdir}/share/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${palmtopdir}/share/roadmap/
-}
diff --git a/packages/roadmap/zroadmap_cvs.bb b/packages/roadmap/zroadmap_cvs.bb
index cb81756041..383ffe8f69 100644
--- a/packages/roadmap/zroadmap_cvs.bb
+++ b/packages/roadmap/zroadmap_cvs.bb
@@ -1,42 +1,13 @@
require zroadmap.inc
-DEPENDS = "expat"
-PV = "1.1.0+cvs${SRCDATE}"
-PR = "r1"
+PV = "0.0+cvs${SRCDATE}"
+PR = "r0"
SRC_URI = "cvs://anonymous:@roadmap.cvs.sf.net/cvsroot/roadmap;module=roadmap \
file://cross.patch;patch=1;pnum=2 \
+ file://options.mk.patch;patch=1;pnum=2 \
file://qt/qt2-fixes.patch;patch=1 \
- http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz \
- file://zroadgps.png"
+ file://roadmap_path.patch;patch=1 \
+ http://roadmap.digitalomaha.net/maps/usdir.rdm.tar.gz"
S = "${WORKDIR}/roadmap/src"
-
-EXTRA_OEMAKE = 'DESKTOP=QPE MOC=${OE_QMAKE_MOC} UIC=${OE_QMAKE_UIC} QTDIR=${QTDIR} \
- CFLAGS="-DQWS -DQT_NO_ROTATE -I${S} ${OE_QMAKE_CFLAGS} -I${OE_QMAKE_INCDIR_QT}" \
- LDFLAGS="${OE_QMAKE_LDFLAGS} -L${OE_QMAKE_LIBDIR_QT} -Wl,-rpath-link,${OE_QMAKE_LIBDIR_QT}" '
-
-do_compile() {
- oe_runmake libguiroadmap.a libguiroadgps.a libroadmap.a
- oe_runmake -C gpx libgpx.a
- oe_runmake -C unix libosroadmap.a
- oe_runmake -C qt qtroadmap qtroadgps
-}
-
-do_install() {
- install -d ${D}${palmtopdir}/bin
- install -d ${D}${palmtopdir}/apps/Applications
- install -d ${D}${palmtopdir}/pics
- install -d ${D}${palmtopdir}/share/roadmap
-
- install -m 0755 qt/qtroadmap ${D}${palmtopdir}/bin/roadmap
- install -m 0755 qt/qtroadgps ${D}${palmtopdir}/bin/roadgps
-
- install -m 0644 icons/*.png ${D}${palmtopdir}/pics/
- install -m 0644 ${WORKDIR}/zroadgps.png ${D}${palmtopdir}/pics/zroadgps.png
-
- install -m 0644 *.desktop ${D}${palmtopdir}/apps/Applications/
-
- install -m 0644 sprites preferences ${D}${palmtopdir}/share/roadmap/
- install -m 0644 ${WORKDIR}/usdir.rdm ${D}${palmtopdir}/share/roadmap/
-}
diff --git a/packages/rp-pppoe/rp-pppoe-3.8/dont-swallow-errors.patch b/packages/rp-pppoe/rp-pppoe-3.8/dont-swallow-errors.patch
new file mode 100644
index 0000000000..81ce2db335
--- /dev/null
+++ b/packages/rp-pppoe/rp-pppoe-3.8/dont-swallow-errors.patch
@@ -0,0 +1,11 @@
+--- a/src/configure.in.org 2008-01-14 21:08:38.000000000 +0200
++++ a/src/configure.in 2008-01-14 21:20:09.000000000 +0200
+@@ -208,7 +208,7 @@
+ return 2;
+ }
+ }], rpppoe_cv_pack_bitfields=normal, rpppoe_cv_pack_bitfields=rev,
+-$ECHO "no defaults for cross-compiling"; exit 0)
++$ECHO "no defaults for cross-compiling"; exit 1)
+ ])
+
+ if test "$rpppoe_cv_pack_bitfields" = "rev" ; then
diff --git a/packages/rp-pppoe/rp-pppoe_3.8.bb b/packages/rp-pppoe/rp-pppoe_3.8.bb
index 35faf8839b..9852522da1 100644
--- a/packages/rp-pppoe/rp-pppoe_3.8.bb
+++ b/packages/rp-pppoe/rp-pppoe_3.8.bb
@@ -5,13 +5,14 @@ LICENSE = "GPLv2"
RDEPENDS_${PN} = "ppp"
RDEPENDS_${PN}-server = "${PN}"
RRECOMMENDS_${PN} = "ppp-oe"
-PR = "r5"
+PR = "r6"
SRC_URI = "http://www.roaringpenguin.com/files/download/${P}.tar.gz \
file://top-autoconf.patch;patch=1 \
file://configure_in_cross.patch;patch=1 \
file://pppoe-src-restrictions.patch;patch=1 \
file://update-config.patch;patch=1 \
+ file://dont-swallow-errors.patch;patch=1 \
file://pppoe-server.default \
file://pppoe-server.init"
diff --git a/packages/sablevm/sablevm-classpath_1.1.9.bb b/packages/sablevm/sablevm-classpath_1.1.9.bb
index cda269c70a..c222572009 100644
--- a/packages/sablevm/sablevm-classpath_1.1.9.bb
+++ b/packages/sablevm/sablevm-classpath_1.1.9.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
SECTION = "libs"
PR = "r1"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native fastjar-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native fastjar-native"
RDEPENDS_${PN} = "${PN}-native"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/sablevm/sablevm-classpath_1.11.3.bb b/packages/sablevm/sablevm-classpath_1.11.3.bb
index 90de4e3ac8..0546dcacd6 100644
--- a/packages/sablevm/sablevm-classpath_1.11.3.bb
+++ b/packages/sablevm/sablevm-classpath_1.11.3.bb
@@ -4,7 +4,7 @@ LICENSE = "Classpath"
PRIORITY = "optional"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-native (>= ${PV})"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/sablevm/sablevm-classpath_1.12.bb b/packages/sablevm/sablevm-classpath_1.12.bb
index 90de4e3ac8..0546dcacd6 100644
--- a/packages/sablevm/sablevm-classpath_1.12.bb
+++ b/packages/sablevm/sablevm-classpath_1.12.bb
@@ -4,7 +4,7 @@ LICENSE = "Classpath"
PRIORITY = "optional"
SECTION = "libs"
-DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst jikes-native zip-native"
+DEPENDS = "glib-2.0 gtk+ libart-lgpl pango libxtst virtual/javac-native zip-native"
RDEPENDS_${PN} = "${PN}-native (>= ${PV})"
SRC_URI = "http://sablevm.org/download/release/${PV}/${PN}-${PV}.tar.gz \
diff --git a/packages/sccd/files/scc.h b/packages/sccd/files/scc.h
index 611092fd9c..b920791f66 100644
--- a/packages/sccd/files/scc.h
+++ b/packages/sccd/files/scc.h
@@ -33,7 +33,7 @@
*/
#define SCC_PIDFILE "/var/run/sccd.pid"
-#define SCC_DEVICE "/dev/tts/1"
+#define SCC_DEVICE "/dev/ttyS1"
#define SCC_SOCKET "/dev/sccd"
#define SCC_PACKETLEN 8
diff --git a/packages/sccd/sccd_1.0.bb b/packages/sccd/sccd_1.0.bb
index 5eeaeef343..bf25fbe90c 100644
--- a/packages/sccd/sccd_1.0.bb
+++ b/packages/sccd/sccd_1.0.bb
@@ -1,7 +1,7 @@
-DECSCRIPTION = "StorCenter Control Daemon - controls the leds, fans, softpower"
+DECSCRIPTION = "StorCenter Control Daemon controls leds, fans, softpower"
SECTION = "utils"
LICENSE = "BSD"
-PR = "r3"
+PR = "r4"
SRC_URI = "file://scc.h \
file://scc.c \
@@ -14,7 +14,7 @@ SRC_URI = "file://scc.h \
inherit autotools update-rc.d
-INITSCRIPT_PARAMS = "defaults 91 20"
+INITSCRIPT_PARAMS = "defaults 9 9"
INITSCRIPT_NAME = "sccd"
do_unpack() {
diff --git a/packages/screen/screen_4.0.2.bb b/packages/screen/screen_4.0.2.bb
index b915a5f72b..29681304ec 100644
--- a/packages/screen/screen_4.0.2.bb
+++ b/packages/screen/screen_4.0.2.bb
@@ -4,10 +4,10 @@ processes, typically interactive shells."
LICENSE = "GPL"
SECTION = "console/utils"
DEPENDS = "ncurses"
-PR = "r1"
+PR = "r2"
SRC_URI = "${GNU_MIRROR}/screen/screen-${PV}.tar.gz \
- ${DEBIAN_MIRROR}/main/s/screen/screen_4.0.2-4.1.diff.gz;patch=1 \
+ ${DEBIAN_MIRROR}/main/s/screen/screen_4.0.2-4.1sarge1.diff.gz;patch=1 \
file://configure.patch;patch=1"
inherit autotools
diff --git a/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb b/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb
index f1321096c9..3857a1577a 100644
--- a/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb
+++ b/packages/speech-dispatcher/speech-dispatcher_0.6.5.bb
@@ -5,7 +5,7 @@ LICENSE = "GPLv2"
DEPENDS = "espeak flite pulseaudio libdotconf glib-2.0"
RPROVIDES_${PN} += "speechd"
-PR = "r6"
+PR = "r7"
inherit autotools update-rc.d
@@ -47,4 +47,10 @@ do_stage() {
oe_libinstall -so -C src/c/api libspeechd ${STAGING_LIBDIR}
}
+PACKAGES =+ "libspeechd-dbg libspeechd libspeechd-dev"
+
FILES_${PN} += "${libdir}/${PN}-modules/*"
+FILES_${PN}-dbg += "${libdir}/${PN}-modules/.debug"
+FILES_libspeechd += "${libdir}/libspeechd.so.*"
+FILES_libspeechd-dev += "${libdir}/libspeechd* ${includedir}"
+FILES_libspeechd-dbg += "${libdir}/.debug/libspeechd*"
diff --git a/packages/supertux/files/.mtn2git_empty b/packages/supertux/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/supertux/files/.mtn2git_empty
diff --git a/packages/supertux/files/gp2x.patch b/packages/supertux/files/gp2x.patch
new file mode 100644
index 0000000000..9d5d9a6d02
--- /dev/null
+++ b/packages/supertux/files/gp2x.patch
@@ -0,0 +1,2614 @@
+Only in supertux-0.1.3: aclocal.m4
+diff -ur supertux-0.1.3/AUTHORS supertux-0.1.3-gp2x/AUTHORS
+--- supertux-0.1.3/AUTHORS 2005-07-02 14:37:30.000000000 +0300
++++ supertux-0.1.3-gp2x/AUTHORS 2006-04-13 06:11:02.000000000 +0300
+@@ -91,6 +91,12 @@
+
+ Royalty free CDROMs and FTP sites sounds
+
++Port to GP2X
++-----------
++ Ingo Arndt
++ scachi@gmx.de
++ http://www.bitmage.de
++
+ More information and contacts
+ =============================
+
+Only in supertux-0.1.3: autom4te.cache
+Only in supertux-0.1.3-gp2x: autoscan.log
+Only in supertux-0.1.3-gp2x: COMPILE4GP2X
+Only in supertux-0.1.3: config.guess
+Only in supertux-0.1.3: config.log
+Only in supertux-0.1.3: config.status
+Only in supertux-0.1.3: config.sub
+Only in supertux-0.1.3: configure
+diff -ur supertux-0.1.3/configure.ac supertux-0.1.3-gp2x/configure.ac
+--- supertux-0.1.3/configure.ac 2005-07-06 12:26:15.000000000 +0300
++++ supertux-0.1.3-gp2x/configure.ac 2006-04-19 22:29:05.000000000 +0300
+@@ -76,13 +76,33 @@
+ CFLAGS="$CFLAGS $SDL_CFLAGS"
+ LIBS="$LIBS $SDL_LIBS"
+
++AM_PATH_LIBMIKMOD(,
++ :,
++ AC_MSG_ERROR([*** mikmod not found!]))
++CXXFLAGS="$CXXFLAGS $LIBMIKMOD_CFLAGS"
++CFLAGS="$CFLAGS $LIBMIKMOD_CFLAGS"
++LIBS="$LIBS $LIBMIKMOD_LIBS"
++
+ dnl Checks for additional libraries.
++AC_CHECK_LIB(smpeg, SMPEG_status)
++
++AC_CHECK_LIB(mikmod, MikMod_Init)
++
+ AC_CHECK_LIB(SDL_mixer, Mix_OpenAudio,,
+ AC_MSG_ERROR([SDL_mixer library required]))
+
++AC_CHECK_LIB(jpeg,jpeg_abort)
++
++AC_CHECK_LIB(z,compress)
++
++AC_CHECK_LIB(png,png_free)
++
+ AC_CHECK_LIB(SDL_image, IMG_Load,,
+ AC_MSG_ERROR([SDL_image library required]))
+
++AC_CHECK_LIB(SDL_gfx, rotozoomSurface,,
++ AC_MSG_ERROR([SDL_gfx library required]))
++
+ if test "x${enable_opengl}" != "xno"; then
+ AX_CHECK_GL
+ fi
+@@ -95,7 +115,30 @@
+ LIBS="$LIBS $GL_LIBS"
+ fi
+
+-AC_CHECK_LIB(z, gzopen,, AC_MSG_ERROR([*** zlib is missing]))
++# compile for the testing the 320x240 resolution
++# compile for the gp2x
++AC_ARG_ENABLE(gp2x,
++[ --enable-gp2x Build the gp2x version [default=no]],
++ , enable_gp2x=no)
++if test x$enable_gp2x = xyes; then
++ CXXFLAGS="$CXXFLAGS -DGP2X"
++fi
++
++AC_ARG_ENABLE(320x240,
++[ --enable-320x240 Test the 320x240 resolution [default=no]],
++ , enable_320x240=no)
++if test x$enable_320x240 = xyes; then
++ CXXFLAGS="$CXXFLAGS -DRES320X240"
++fi
++
++# compile static
++AC_ARG_ENABLE(static,
++[ --enable-static Build the static version [default=no]],
++ , enable_static=no)
++if test x$enable_static = xyes; then
++ CXXFLAGS="$CXXFLAGS -static"
++fi
++
+
+ CXXFLAGS="$CXXFLAGS -DDATA_PREFIX='\"$datadir/supertux\"'"
+
+@@ -110,6 +153,9 @@
+ echo " Profile Mode: $enable_gprof"
+ echo " Debug Mode: $enable_debug"
+ echo " OpenGL Support: $enable_opengl"
++echo " 320x240 Resolution: $enable_320x240"
++echo " GP2X Build (+320x240): $enable_gp2x"
++echo " Static Build: $enable_static"
+ echo ""
+
+ # EOF #
+Only in supertux-0.1.3/data: CREDITS
+Only in supertux-0.1.3/data: extro-bonus2.txt
+Only in supertux-0.1.3/data: extro-bonus.txt
+Only in supertux-0.1.3/data: extro.txt
+Only in supertux-0.1.3/data: images
+Only in supertux-0.1.3/data: intro.txt
+Only in supertux-0.1.3/data: levels
+Only in supertux-0.1.3/data: Makefile
+Only in supertux-0.1.3/data: Makefile.in
+Only in supertux-0.1.3/data: music
+Only in supertux-0.1.3/data: sounds
+Only in supertux-0.1.3/data: supertux.strf
+Only in supertux-0.1.3: depcomp
+Only in supertux-0.1.3: install-sh
+Only in supertux-0.1.3: m4
+Only in supertux-0.1.3: Makefile
+Only in supertux-0.1.3: Makefile.in
+Only in supertux-0.1.3: missing
+Only in supertux-0.1.3: mkinstalldirs
+Only in supertux-0.1.3: patches
+diff -ur supertux-0.1.3/src/badguy.cpp supertux-0.1.3-gp2x/src/badguy.cpp
+--- supertux-0.1.3/src/badguy.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/badguy.cpp 2006-04-20 21:32:23.000000000 +0300
+@@ -250,7 +250,11 @@
+ tux.kick_timer.start(KICKING_TIME);
+ set_sprite(img_mriceblock_flat_left, img_mriceblock_flat_right);
+ physic.set_velocity_x((dir == LEFT) ? -3.5 : 3.5);
++#ifndef GP2X
+ play_sound(sounds[SND_KICK],SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_KICK);
++#endif
+ }
+ }
+
+@@ -260,6 +264,7 @@
+ check_horizontal_bump();
+ if(mode == KICK && changed != dir)
+ {
++#ifndef GP2X
+ /* handle stereo sound (number 10 should be tweaked...)*/
+ if (base.x < scroll_x + screen->w/2 - 10)
+ play_sound(sounds[SND_RICOCHET], SOUND_LEFT_SPEAKER);
+@@ -267,6 +272,9 @@
+ play_sound(sounds[SND_RICOCHET], SOUND_RIGHT_SPEAKER);
+ else
+ play_sound(sounds[SND_RICOCHET], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_RICOCHET);
++#endif
+ }
+ }
+
+@@ -455,11 +463,15 @@
+
+ /* play explosion sound */ // FIXME: is the stereo all right? maybe we should use player cordinates...
+ if (base.x < scroll_x + screen->w/2 - 10)
++#ifndef GP2X
+ play_sound(sounds[SND_EXPLODE], SOUND_LEFT_SPEAKER);
+ else if (base.x > scroll_x + screen->w/2 + 10)
+ play_sound(sounds[SND_EXPLODE], SOUND_RIGHT_SPEAKER);
+ else
+ play_sound(sounds[SND_EXPLODE], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_EXPLODE);
++#endif
+
+ } else if(mode == BOMB_EXPLODE) {
+ remove_me();
+@@ -677,13 +689,21 @@
+ }
+
+ // BadGuy fall below the ground
++#ifndef RES320X240
+ if (base.y > screen->h) {
++#else
++ if (base.y > 640) {
++#endif
+ remove_me();
+ return;
+ }
+
+ // Once it's on screen, it's activated!
++#ifndef RES320X240
+ if (base.x <= scroll_x + screen->w + OFFSCREEN_DISTANCE)
++#else
++ if (base.x <= scroll_x + 640 + OFFSCREEN_DISTANCE)
++#endif
+ seen = true;
+
+ if(!seen)
+@@ -743,7 +763,11 @@
+ BadGuy::draw()
+ {
+ // Don't try to draw stuff that is outside of the screen
++#ifndef RES320X240
+ if(base.x <= scroll_x - base.width || base.x >= scroll_x + screen->w)
++#else
++ if(base.x <= scroll_x - base.width || base.x >= scroll_x + 640)
++#endif
+ return;
+
+ if(sprite_left == 0 || sprite_right == 0)
+@@ -811,7 +835,11 @@
+
+ World::current()->add_score(base.x - scroll_x,
+ base.y, 50 * player_status.score_multiplier);
++#ifndef GP2X
+ play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_SQUISH);
++#endif
+ player_status.score_multiplier++;
+
+ dying = DYING_SQUISHED;
+@@ -830,7 +858,11 @@
+
+ player->jump_of_badguy(this);
+ World::current()->add_score(base.x - scroll_x, base.y, 50 * player_status.score_multiplier);
++#ifndef GP2X
+ play_sound(sounds[SND_SQUISH], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_SQUISH);
++#endif
+ player_status.score_multiplier++;
+ remove_me();
+ return;
+@@ -839,7 +871,11 @@
+ if (mode == NORMAL || mode == KICK)
+ {
+ /* Flatten! */
++#ifndef GP2X
+ play_sound(sounds[SND_STOMP], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_STOMP);
++#endif
+ mode = FLAT;
+ set_sprite(img_mriceblock_flat_left, img_mriceblock_flat_right);
+ physic.set_velocity_x(0);
+@@ -847,7 +883,11 @@
+ timer.start(4000);
+ } else if (mode == FLAT) {
+ /* Kick! */
++#ifndef GP2X
+ play_sound(sounds[SND_KICK], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_KICK);
++#endif
+
+ if (player->base.x < base.x + (base.width/2)) {
+ physic.set_velocity_x(5);
+@@ -925,7 +965,11 @@
+ score * player_status.score_multiplier);
+
+ /* Play death sound: */
++#ifndef GP2X
+ play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_FALL);
++#endif
+ }
+
+ void BadGuy::explode(BadGuy *badguy)
+@@ -1053,7 +1097,11 @@
+ /* Get kicked if were flat */
+ if (mode == FLAT && !dying)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_KICK], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_KICK);
++#endif
+
+ // Hit from left side
+ if (player->base.x < base.x) {
+diff -ur supertux-0.1.3/src/configfile.cpp supertux-0.1.3-gp2x/src/configfile.cpp
+--- supertux-0.1.3/src/configfile.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/configfile.cpp 2006-04-10 13:32:19.000000000 +0300
+@@ -92,12 +92,22 @@
+ else
+ use_joystick = true;
+
++#ifndef GP2X
+ reader.read_int ("joystick-x", &joystick_keymap.x_axis);
+ reader.read_int ("joystick-y", &joystick_keymap.y_axis);
+ reader.read_int ("joystick-a", &joystick_keymap.a_button);
+ reader.read_int ("joystick-b", &joystick_keymap.b_button);
+ reader.read_int ("joystick-start", &joystick_keymap.start_button);
+ reader.read_int ("joystick-deadzone", &joystick_keymap.dead_zone);
++#else
++ reader.read_int ("joystick-up", &joystick_keymap.up_button);
++ reader.read_int ("joystick-down", &joystick_keymap.down_button);
++ reader.read_int ("joystick-right", &joystick_keymap.right_button);
++ reader.read_int ("joystick-left", &joystick_keymap.left_button);
++ reader.read_int ("joystick-a", &joystick_keymap.a_button);
++ reader.read_int ("joystick-b", &joystick_keymap.b_button);
++ reader.read_int ("joystick-start", &joystick_keymap.start_button);
++#endif
+
+ reader.read_int ("keyboard-jump", &keymap.jump);
+ reader.read_int ("keyboard-duck", &keymap.duck);
+@@ -130,12 +140,22 @@
+ fprintf(config, "\n\t;; joystick number (-1 means no joystick):\n");
+ fprintf(config, "\t(joystick %d)\n", use_joystick ? joystick_num : -1);
+
++#ifndef GP2X
+ fprintf(config, "\t(joystick-x %d)\n", joystick_keymap.x_axis);
+ fprintf(config, "\t(joystick-y %d)\n", joystick_keymap.y_axis);
+ fprintf(config, "\t(joystick-a %d)\n", joystick_keymap.a_button);
+ fprintf(config, "\t(joystick-b %d)\n", joystick_keymap.b_button);
+ fprintf(config, "\t(joystick-start %d)\n", joystick_keymap.start_button);
+ fprintf(config, "\t(joystick-deadzone %d)\n", joystick_keymap.dead_zone);
++#else
++ fprintf(config, "\t(joystick-up %d)\n", joystick_keymap.up_button);
++ fprintf(config, "\t(joystick-down %d)\n", joystick_keymap.down_button);
++ fprintf(config, "\t(joystick-right %d)\n", joystick_keymap.right_button);
++ fprintf(config, "\t(joystick-left %d)\n", joystick_keymap.left_button);
++ fprintf(config, "\t(joystick-a %d)\n", joystick_keymap.a_button);
++ fprintf(config, "\t(joystick-b %d)\n", joystick_keymap.b_button);
++ fprintf(config, "\t(joystick-start %d)\n", joystick_keymap.start_button);
++#endif
+
+ fprintf(config, "\t(keyboard-jump %d)\n", keymap.jump);
+ fprintf(config, "\t(keyboard-duck %d)\n", keymap.duck);
+diff -ur supertux-0.1.3/src/defines.h supertux-0.1.3-gp2x/src/defines.h
+--- supertux-0.1.3/src/defines.h 2005-07-07 02:05:03.000000000 +0300
++++ supertux-0.1.3-gp2x/src/defines.h 2006-04-11 22:02:05.000000000 +0300
+@@ -91,7 +91,11 @@
+
+ /* Scrolling text speed */
+
++#ifndef RES320X240
+ #define SCROLL_SPEED_CREDITS 1.2
++#else
++#define SCROLL_SPEED_CREDITS 2.4
++#endif
+ #define SCROLL_SPEED_MESSAGE 1.0
+
+ /* Debugging */
+Only in supertux-0.1.3/src: .deps
+diff -ur supertux-0.1.3/src/gameloop.cpp supertux-0.1.3-gp2x/src/gameloop.cpp
+--- supertux-0.1.3/src/gameloop.cpp 2005-07-02 15:16:08.000000000 +0300
++++ supertux-0.1.3-gp2x/src/gameloop.cpp 2006-05-05 23:22:58.000000000 +0300
+@@ -288,6 +288,7 @@
+
+ switch(event.type)
+ {
++#ifndef GP2X
+ case SDL_QUIT: /* Quit event - quit: */
+ st_abort("Received window close", "");
+ break;
+@@ -434,22 +435,60 @@
+ tux.input.down = UP;
+ }
+ break;
+-
++#endif
+ case SDL_JOYBUTTONDOWN:
++#ifndef GP2X
++ if (event.jbutton.button == joystick_keymap.a_button)
++ tux.input.up = DOWN;
++ else if (event.jbutton.button == joystick_keymap.b_button)
++ tux.input.fire = DOWN;
++ else if (event.jbutton.button == joystick_keymap.start_button)
++ on_escape_press();
++ break;
++#else
+ if (event.jbutton.button == joystick_keymap.a_button)
+ tux.input.up = DOWN;
+ else if (event.jbutton.button == joystick_keymap.b_button)
+ tux.input.fire = DOWN;
+ else if (event.jbutton.button == joystick_keymap.start_button)
+ on_escape_press();
++ else if (event.jbutton.button == joystick_keymap.up_button)
++ tux.input.up = DOWN;
++ else if (event.jbutton.button == joystick_keymap.down_button)
++ tux.input.down = DOWN;
++ else if (event.jbutton.button == joystick_keymap.right_button)
++ tux.input.right = DOWN;
++ else if (event.jbutton.button == joystick_keymap.left_button)
++ tux.input.left = DOWN;
++ else if (event.jbutton.button == joystick_keymap.voldown_button)
++ decreaseSoundVolume();
++ else if (event.jbutton.button == joystick_keymap.volup_button)
++ increaseSoundVolume();
+ break;
++#endif
++
+ case SDL_JOYBUTTONUP:
++#ifndef GP2X
+ if (event.jbutton.button == joystick_keymap.a_button)
+ tux.input.up = UP;
+ else if (event.jbutton.button == joystick_keymap.b_button)
+ tux.input.fire = UP;
+ break;
+-
++#else
++ if (event.jbutton.button == joystick_keymap.a_button)
++ tux.input.up = UP;
++ else if (event.jbutton.button == joystick_keymap.b_button)
++ tux.input.fire = UP;
++ else if (event.jbutton.button == joystick_keymap.up_button)
++ tux.input.up = UP;
++ else if (event.jbutton.button == joystick_keymap.down_button)
++ tux.input.down = UP;
++ else if (event.jbutton.button == joystick_keymap.right_button)
++ tux.input.right = UP;
++ else if (event.jbutton.button == joystick_keymap.left_button)
++ tux.input.left = UP;
++ break;
++#endif
+ default:
+ break;
+ } /* switch */
+@@ -464,7 +503,7 @@
+ Player* tux = world->get_tux();
+
+ /* End of level? */
+- int endpos = (World::current()->get_level()->width-5) * 32;
++ int endpos = (World::current()->get_level()->width-5) * (32);
+ Tile* endtile = collision_goal(tux->base);
+
+ // fallback in case the other endpositions don't trigger
+@@ -545,7 +584,7 @@
+ Menu::current()->draw();
+ mouse_cursor->draw();
+ }
+-
++ //updateSound();
+ updatescreen();
+ }
+
+@@ -599,6 +638,7 @@
+
+ while (exit_status == ES_NONE)
+ {
++ SDL_Delay(10);
+ /* Calculate the movement-factor */
+ double frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
+
+@@ -686,6 +726,7 @@
+ fps_cnt = 0;
+ }
+ }
++ //updateSound();
+ }
+
+ return exit_status;
+@@ -694,21 +735,32 @@
+ /* Bounce a brick: */
+ void bumpbrick(float x, float y)
+ {
+- World::current()->add_bouncy_brick(((int)(x + 1) / 32) * 32,
+- (int)(y / 32) * 32);
++ World::current()->add_bouncy_brick(((int)(x + 1) / (32)) * (32),
++ (int)(y / (32)) * (32));
+
++#ifndef GP2X
+ play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_BRICK);
++#endif
+ }
+
+ /* (Status): */
+ void
+ GameSession::drawstatus()
+ {
++ int xdiv;
++#ifdef RES320X240
++ xdiv=2;
++#else
++ xdiv=1;
++#endif
++
+ char str[60];
+
+ sprintf(str, "%d", player_status.score);
+ white_text->draw("SCORE", 0, 0, 1);
+- gold_text->draw(str, 96, 0, 1);
++ gold_text->draw(str, 96/xdiv, 0, 1);
+
+ if(st_gl_mode == ST_GL_TEST)
+ {
+@@ -716,28 +768,33 @@
+ }
+
+ if(!time_left.check()) {
+- white_text->draw("TIME'S UP", 224, 0, 1);
++ white_text->draw("TIME'S UP", 224/xdiv, 0, 1);
+ } else if (time_left.get_left() > TIME_WARNING || (global_frame_counter % 10) < 5) {
+ sprintf(str, "%d", time_left.get_left() / 1000 );
+- white_text->draw("TIME", 224, 0, 1);
+- gold_text->draw(str, 304, 0, 1);
++ white_text->draw("TIME", 224/xdiv, 0, 1);
++ gold_text->draw(str, 304/xdiv, 0, 1);
+ }
+
+ sprintf(str, "%d", player_status.distros);
+ white_text->draw("COINS", screen->h, 0, 1);
+- gold_text->draw(str, 608, 0, 1);
++ gold_text->draw(str, 608/xdiv, 0, 1);
+
+- white_text->draw("LIVES", 480, 20);
++ white_text->draw("LIVES", 480/xdiv, 20);
+ if (player_status.lives >= 5)
+ {
+ sprintf(str, "%dx", player_status.lives);
++#ifdef RES320X240
++ gold_text->draw_align(str, 617/xdiv-5, 20, A_RIGHT, A_TOP);
++ tux_life->draw(565+(18*3)/xdiv+10, 20);
++#else
+ gold_text->draw_align(str, 617, 20, A_RIGHT, A_TOP);
+ tux_life->draw(565+(18*3), 20);
++#endif
+ }
+ else
+ {
+ for(int i= 0; i < player_status.lives; ++i)
+- tux_life->draw(565+(18*i),20);
++ tux_life->draw(565+(18*i)/xdiv,20);
+ }
+
+ if(show_fps)
+@@ -746,6 +803,7 @@
+ white_text->draw("FPS", screen->h, 40, 1);
+ gold_text->draw(str, screen->h + 60, 40, 1);
+ }
++// updateSound();
+ }
+
+ void
+@@ -824,4 +882,3 @@
+ return tmp;
+ }
+
+-
+diff -ur supertux-0.1.3/src/gameobjs.cpp supertux-0.1.3-gp2x/src/gameobjs.cpp
+--- supertux-0.1.3/src/gameobjs.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/gameobjs.cpp 2006-04-11 21:52:52.000000000 +0300
+@@ -98,6 +98,9 @@
+ src.h = 16;
+
+ dest.x = (int)(base.x - scroll_x);
++#ifdef RES320X240
++ dest.x=dest.x/2;
++#endif
+ dest.y = (int)base.y;
+ dest.w = 16;
+ dest.h = 16;
+@@ -143,8 +146,13 @@
+ {
+ SDL_Rect dest;
+
++#ifndef RES320X240
+ if (base.x >= scroll_x - 32 &&
+ base.x <= scroll_x + screen->w)
++#else
++ if (base.x >= scroll_x - 32 &&
++ base.x <= scroll_x + 640)
++#endif
+ {
+ dest.x = (int)(base.x - scroll_x);
+ dest.y = (int)base.y;
+@@ -165,8 +173,14 @@
+ else
+ {
+ int s = ((int)scroll_x / 2)%640;
++
++#ifdef RES320X240
++ plevel->img_bkgd->draw_part(dest.x/2 + s/2, dest.y/2,
++ dest.x/2, dest.y,dest.w/2,dest.h/2);
++#else
+ plevel->img_bkgd->draw_part(dest.x + s, dest.y,
+ dest.x, dest.y,dest.w,dest.h);
++#endif
+ }
+
+ Tile::draw(base.x - scroll_x,
+diff -ur supertux-0.1.3/src/globals.cpp supertux-0.1.3-gp2x/src/globals.cpp
+--- supertux-0.1.3/src/globals.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/globals.cpp 2006-04-11 22:39:03.000000000 +0300
+@@ -25,6 +25,7 @@
+
+ JoystickKeymap::JoystickKeymap()
+ {
++#ifndef GP2X
+ a_button = 0;
+ b_button = 1;
+ start_button = 2;
+@@ -33,6 +34,17 @@
+ y_axis = 1;
+
+ dead_zone = 4096;
++#else
++ a_button = GP2X_BUTTON_A;
++ b_button = GP2X_BUTTON_X;
++ start_button = GP2X_BUTTON_START;
++ up_button = GP2X_BUTTON_UP;
++ down_button = GP2X_BUTTON_DOWN;
++ left_button = GP2X_BUTTON_LEFT;
++ right_button = GP2X_BUTTON_RIGHT;
++ volup_button = GP2X_BUTTON_VOLUP;
++ voldown_button = GP2X_BUTTON_VOLDOWN;
++#endif
+ }
+
+ JoystickKeymap joystick_keymap;
+diff -ur supertux-0.1.3/src/globals.h supertux-0.1.3-gp2x/src/globals.h
+--- supertux-0.1.3/src/globals.h 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/globals.h 2006-04-11 23:45:27.000000000 +0300
+@@ -28,10 +28,33 @@
+ #include "menu.h"
+ #include "mousecursor.h"
+
++#ifdef GP2X
++#define GP2X_BUTTON_UP (0)
++#define GP2X_BUTTON_DOWN (4)
++#define GP2X_BUTTON_LEFT (2)
++#define GP2X_BUTTON_RIGHT (6)
++#define GP2X_BUTTON_UPLEFT (1)
++#define GP2X_BUTTON_UPRIGHT (7)
++#define GP2X_BUTTON_DOWNLEFT (3)
++#define GP2X_BUTTON_DOWNRIGHT (5)
++#define GP2X_BUTTON_CLICK (18)
++#define GP2X_BUTTON_A (12)
++#define GP2X_BUTTON_B (13)
++#define GP2X_BUTTON_X (15)
++#define GP2X_BUTTON_Y (14)
++#define GP2X_BUTTON_L (10)
++#define GP2X_BUTTON_R (11)
++#define GP2X_BUTTON_START (8)
++#define GP2X_BUTTON_SELECT (9)
++#define GP2X_BUTTON_VOLUP (16)
++#define GP2X_BUTTON_VOLDOWN (17)
++#endif
++
+ extern std::string datadir;
+
+ struct JoystickKeymap
+ {
++#ifndef GP2X
+ int a_button;
+ int b_button;
+ int start_button;
+@@ -42,6 +65,19 @@
+ int dead_zone;
+
+ JoystickKeymap();
++#else
++ int a_button;
++ int b_button;
++ int start_button;
++ int up_button;
++ int down_button;
++ int left_button;
++ int right_button;
++ int volup_button;
++ int voldown_button;
++
++ JoystickKeymap();
++#endif
+ };
+
+ extern JoystickKeymap joystick_keymap;
+diff -ur supertux-0.1.3/src/lispreader.h supertux-0.1.3-gp2x/src/lispreader.h
+Only in supertux-0.1.3/src: Makefile
+diff -ur supertux-0.1.3/src/Makefile.am supertux-0.1.3-gp2x/src/Makefile.am
+--- supertux-0.1.3/src/Makefile.am 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/Makefile.am 2006-04-19 21:55:54.000000000 +0300
+@@ -77,3 +77,5 @@
+ musicref.h
+
+ # EOF #
++
++#supertux_LDADD = libmikmod
+Only in supertux-0.1.3/src: Makefile.in
+diff -ur supertux-0.1.3/src/menu.cpp supertux-0.1.3-gp2x/src/menu.cpp
+--- supertux-0.1.3/src/menu.cpp 2005-06-29 15:44:13.000000000 +0300
++++ supertux-0.1.3-gp2x/src/menu.cpp 2006-05-04 23:59:29.000000000 +0300
+@@ -53,6 +53,8 @@
+ Menu* options_menu = 0;
+ Menu* options_keys_menu = 0;
+ Menu* options_joystick_menu = 0;
++Menu* options_joystick_axis_menu = 0;
++Menu* options_joystick_button_menu = 0;
+ Menu* highscore_menu = 0;
+ Menu* load_game_menu = 0;
+ Menu* save_game_menu = 0;
+@@ -240,8 +242,10 @@
+ }
+
+ /* Set ControlField a key */
++//TODO: get joystick in here somehow
+ void Menu::get_controlfield_key_into_input(MenuItem *item)
+ {
++#ifndef GP2X
+ switch(*item->int_p)
+ {
+ case SDLK_UP:
+@@ -288,6 +292,11 @@
+ }
+ break;
+ }
++#else
++ char tmp[64];
++ snprintf(tmp, 64, "%d", *item->int_p);
++ item->change_input(tmp);
++#endif
+ }
+
+ /* Free a menu and all its items */
+@@ -497,8 +506,13 @@
+ int menu_height)
+ {
+ MenuItem& pitem = item[index];
+-
++
++#ifndef RES320X240
+ int font_width = 16;
++#else
++ int font_width = 16/2;
++#endif
++
+ int effect_offset = 0;
+ {
+ int effect_time = 0;
+@@ -510,7 +524,7 @@
+ }
+
+ int x_pos = pos_x;
+- int y_pos = pos_y + 24*index - menu_height/2 + 12 + effect_offset;
++ int y_pos = pos_y + (int)(24)*index - menu_height/2 + 12 + effect_offset;
+ int shadow_size = 2;
+ int text_width = strlen(pitem.text) * font_width;
+ int input_width = (strlen(pitem.input)+ 1) * font_width;
+@@ -518,7 +532,7 @@
+ Text* text_font = white_text;
+
+ if (arrange_left)
+- x_pos += 24 - menu_width/2 + (text_width + input_width + list_width)/2;
++ x_pos += (int)(24) - menu_width/2 + (text_width + input_width + list_width)/2;
+
+ if(index == active_item)
+ {
+@@ -538,7 +552,11 @@
+
+ case MN_HL:
+ {
++#ifndef RES320X240
+ int x = pos_x - menu_width/2;
++#else
++ int x = pos_x - menu_width/4;
++#endif
+ int y = y_pos - 12 - effect_offset;
+ /* Draw a horizontal line with a little 3d effect */
+ fillrect(x, y + 6,
+@@ -551,9 +569,15 @@
+ }
+ case MN_LABEL:
+ {
++#ifndef RES320X240
+ white_big_text->draw_align(pitem.text,
+ x_pos, y_pos,
+ A_HMIDDLE, A_VMIDDLE, 2);
++#else
++ white_text->draw_align(pitem.text,
++ x_pos, y_pos,
++ A_HMIDDLE, A_VMIDDLE, 2);
++#endif
+ break;
+ }
+ case MN_TEXTFIELD:
+@@ -570,8 +594,9 @@
+ input_width + font_width, 18,
+ 0,0,0,128);
+
+- if(pitem.kind == MN_CONTROLFIELD)
++ if(pitem.kind == MN_CONTROLFIELD) {
+ get_controlfield_key_into_input(&pitem);
++ }
+
+ if(pitem.kind == MN_TEXTFIELD || pitem.kind == MN_NUMFIELD)
+ {
+@@ -663,7 +688,7 @@
+ menu_width += 2;
+ }
+ }
+-
++
+ return (menu_width * 16 + 24);
+ }
+
+@@ -680,10 +705,17 @@
+ int menu_width = get_width();
+
+ /* Draw a transparent background */
++#ifndef RES320X240
+ fillrect(pos_x - menu_width/2,
+ pos_y - 24*item.size()/2 - 10,
+ menu_width,menu_height + 20,
+ 150,180,200,125);
++#else
++ fillrect(pos_x - menu_width/4,
++ pos_y - 24*item.size()/2 - 10,
++ menu_width,menu_height + 20,
++ 150,180,200,125);
++#endif
+
+ for(unsigned int i = 0; i < item.size(); ++i)
+ {
+@@ -723,6 +755,8 @@
+ SDLKey key;
+ switch(event.type)
+ {
++
++#ifndef GP2X
+ case SDL_KEYDOWN:
+ key = event.key.keysym.sym;
+ SDLMod keymod;
+@@ -754,7 +788,6 @@
+ return;
+ }
+
+-
+ switch(key)
+ {
+ case SDLK_UP: /* Menu Up */
+@@ -800,12 +833,14 @@
+ break;
+ }
+ break;
++
+ case SDL_JOYHATMOTION:
+ if(event.jhat.value == SDL_HAT_UP)
+ menuaction = MENU_ACTION_UP;
+ if(event.jhat.value == SDL_HAT_DOWN)
+ menuaction = MENU_ACTION_DOWN;
+ break;
++
+ case SDL_JOYAXISMOTION:
+ if(event.jaxis.axis == joystick_keymap.y_axis)
+ {
+@@ -815,9 +850,88 @@
+ menuaction = MENU_ACTION_UP;
+ }
+ break;
++#endif
++
+ case SDL_JOYBUTTONDOWN:
++#ifndef GP2X
+ menuaction = MENU_ACTION_HIT;
+ break;
++#else
++
++ if(item[active_item].kind == MN_CONTROLFIELD)
++ {
++ if( event.jbutton.button == joystick_keymap.start_button )
++ {
++ Menu::pop_current();
++ return;
++ }
++
++ static int save[8]={-1,-1,-1,-1,-1,-1,-1,-1};
++ int itemid=get_active_item_id();
++ int inputkey;
++ switch ( itemid ) {
++ case 11 : inputkey=joystick_keymap.up_button;
++ break;
++ case 12 : inputkey=joystick_keymap.down_button;
++ break;
++ case 13 : inputkey=joystick_keymap.left_button;
++ break;
++ case 14 : inputkey=joystick_keymap.right_button;
++ break;
++ case 15 : inputkey=joystick_keymap.a_button;
++ break;
++ case 16 : inputkey=joystick_keymap.b_button;
++ break;
++ default : break;
++ }
++
++ *item[active_item].int_p = event.jbutton.button;
++
++ bool okay=true;
++
++ save[itemid-11]=event.jbutton.button;
++
++ int i;
++ for ( i=0;i<itemid-11;i++ ) {
++ if ( save[i] == event.jbutton.button ) okay=false;
++ }
++ if ( okay == true ) menuaction = MENU_ACTION_DOWN;
++ else menuaction = MENU_ACTION_NONE;
++
++ return;
++ }
++
++ if (event.jbutton.button == joystick_keymap.a_button)
++ menuaction = MENU_ACTION_HIT;
++ else if (event.jbutton.button == joystick_keymap.b_button)
++ menuaction = MENU_ACTION_HIT;
++ else if (event.jbutton.button == joystick_keymap.start_button)
++ menuaction = MENU_ACTION_HIT;
++ else if (event.jbutton.button == joystick_keymap.up_button)
++ menuaction = MENU_ACTION_UP;
++ else if (event.jbutton.button == joystick_keymap.down_button)
++ menuaction = MENU_ACTION_DOWN;
++ else if (event.jbutton.button == joystick_keymap.right_button)
++ menuaction = MENU_ACTION_RIGHT;
++ else if (event.jbutton.button == joystick_keymap.left_button)
++ menuaction = MENU_ACTION_LEFT;
++ else if (event.jbutton.button == joystick_keymap.volup_button)
++#ifdef GP2X
++ increaseSoundVolume();
++#else
++ sound_volume(2);
++#endif
++ else if (event.jbutton.button == joystick_keymap.voldown_button)
++#ifdef GP2X
++ decreaseSoundVolume();
++#else
++ sound_volume(1);
++#endif
++ break;
++
++#endif
++
++#ifndef GP2X
+ case SDL_MOUSEBUTTONDOWN:
+ x = event.motion.x;
+ y = event.motion.y;
+@@ -847,6 +961,7 @@
+ break;
+ default:
+ break;
++#endif
+ }
+ }
+
+diff -ur supertux-0.1.3/src/menu.h supertux-0.1.3-gp2x/src/menu.h
+--- supertux-0.1.3/src/menu.h 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/menu.h 2006-05-04 23:48:30.000000000 +0300
+@@ -236,6 +236,8 @@
+ extern Menu* options_menu;
+ extern Menu* options_keys_menu;
+ extern Menu* options_joystick_menu;
++extern Menu* options_joystick_axis_menu;
++extern Menu* options_joystick_button_menu;
+ extern Menu* highscore_menu;
+ extern Menu* load_game_menu;
+ extern Menu* save_game_menu;
+diff -ur supertux-0.1.3/src/music_manager.cpp supertux-0.1.3-gp2x/src/music_manager.cpp
+--- supertux-0.1.3/src/music_manager.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/music_manager.cpp 2006-04-22 13:16:32.000000000 +0300
+@@ -59,7 +59,14 @@
+ return true;
+ }
+
++#ifndef GP2X
+ Mix_Music* song = Mix_LoadMUS(file.c_str());
++#else
++ char mfile[100];
++ snprintf(mfile,sizeof(mfile),"%s",file.c_str());
++ MODULE *song=Player_Load(mfile, 64, 0);
++#endif
++
+ if(song == 0)
+ return false;
+
+@@ -84,6 +91,8 @@
+ void
+ MusicManager::play_music(const MusicRef& musicref, int loops)
+ {
++// printf("loop: %d, musicref: %d\n",loops,musicref.music);
++
+ if(!audio_device)
+ return;
+
+@@ -97,7 +106,16 @@
+ current_music->refcount++;
+
+ if(music_enabled)
++#ifndef GP2X
+ Mix_PlayMusic(current_music->music, loops);
++#else
++ {
++ if ( loops == -1 ) current_music->music->wrap=1;
++ Player_Stop();
++ Player_Start(current_music->music);
++ Player_SetPosition(0);
++ }
++#endif
+ }
+
+ void
+@@ -106,13 +124,17 @@
+ if(!audio_device)
+ return;
+
++#ifndef GP2X
+ Mix_HaltMusic();
++#else
++ Player_Stop();
++#endif
+
+ if(current_music) {
+ current_music->refcount--;
+ if(current_music->refcount == 0)
+ free_music(current_music);
+- current_music = 0;
++ current_music = 0;
+ }
+ }
+
+@@ -127,9 +149,17 @@
+
+ music_enabled = enable;
+ if(music_enabled == false) {
++#ifndef GP2X
+ Mix_HaltMusic();
++#else
++ Player_Stop();
++#endif
+ } else {
++#ifndef GP2X
+ Mix_PlayMusic(current_music->music, -1);
++#else
++ Player_Start(current_music->music);
++#endif
+ }
+ }
+
+diff -ur supertux-0.1.3/src/music_manager.h supertux-0.1.3-gp2x/src/music_manager.h
+--- supertux-0.1.3/src/music_manager.h 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/music_manager.h 2006-04-22 04:51:32.000000000 +0300
+@@ -20,6 +20,10 @@
+ #ifndef HEADER_MUSIC_MANAGER_H
+ #define HEADER_MUSIC_MANAGER_H
+
++#ifdef GP2X
++#include "mikmod.h"
++#endif
++
+ #include <SDL_mixer.h>
+ #include <string>
+ #include <map>
+@@ -51,7 +55,12 @@
+ ~MusicResource();
+
+ MusicManager* manager;
++#ifndef GP2X
+ Mix_Music* music;
++#else
++ MODULE *music;
++#endif
++
+ int refcount;
+ };
+
+diff -ur supertux-0.1.3/src/particlesystem.cpp supertux-0.1.3-gp2x/src/particlesystem.cpp
+--- supertux-0.1.3/src/particlesystem.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/particlesystem.cpp 2006-04-12 22:20:41.000000000 +0300
+@@ -28,8 +28,13 @@
+
+ ParticleSystem::ParticleSystem()
+ {
++#ifndef RES320X240
+ virtual_width = screen->w;
+ virtual_height = screen->h;
++#else
++ virtual_width = 640;
++ virtual_height = 480;
++#endif
+ }
+
+ ParticleSystem::~ParticleSystem()
+@@ -57,13 +62,24 @@
+ float ymax = fmodf(y + particle->texture->h, virtual_height);
+
+ // particle on screen
++#ifndef RES320X240
+ if(x >= screen->w && xmax >= screen->w)
+ continue;
+ if(y >= screen->h && ymax >= screen->h)
+ continue;
+-
++
+ if(x > screen->w) x -= virtual_width;
+ if(y > screen->h) y -= virtual_height;
++#else
++ if(x >= 640 && xmax >= 640)
++ continue;
++ if(y >= 480 && ymax >= 480)
++ continue;
++
++ if(x > 640) x -= virtual_width;
++ if(y > 480) y -= virtual_height;
++#endif
++
+ particle->texture->draw(x, y);
+ }
+ }
+@@ -74,14 +90,21 @@
+ snowimages[1] = new Surface(datadir+"/images/shared/snow1.png", USE_ALPHA);
+ snowimages[2] = new Surface(datadir+"/images/shared/snow2.png", USE_ALPHA);
+
++#ifndef RES320X240
+ virtual_width = screen->w * 2;
+-
++#else
++ virtual_width = 640 * 2;
++#endif
+ // create some random snowflakes
+ size_t snowflakecount = size_t(virtual_width/10.0);
+ for(size_t i=0; i<snowflakecount; ++i) {
+ SnowParticle* particle = new SnowParticle;
+ particle->x = rand() % int(virtual_width);
++#ifndef RES320X240
+ particle->y = rand() % screen->h;
++#else
++ particle->y = rand() % 480;
++#endif
+ particle->layer = i % 2;
+ int snowsize = rand() % 3;
+ particle->texture = snowimages[snowsize];
+@@ -106,7 +129,11 @@
+ for(i = particles.begin(); i != particles.end(); ++i) {
+ SnowParticle* particle = (SnowParticle*) *i;
+ particle->y += particle->speed * elapsed_time;
++#ifndef RES320X240
+ if(particle->y > screen->h) {
++#else
++ if(particle->y > 480) {
++#endif
+ particle->y = fmodf(particle->y , virtual_height);
+ particle->x = rand() % int(virtual_width);
+ }
+diff -ur supertux-0.1.3/src/player.cpp supertux-0.1.3-gp2x/src/player.cpp
+--- supertux-0.1.3/src/player.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/player.cpp 2006-05-05 22:59:52.000000000 +0300
+@@ -261,6 +261,7 @@
+ }
+ }
+ }
++// updateSound();
+
+ /* ---- DONE HANDLING TUX! --- */
+
+@@ -337,7 +338,11 @@
+ if(on_ground() && ((vx < 0 && dirsign >0) || (vx>0 && dirsign<0))) {
+ if(fabs(vx)>SKID_XM && !skidding_timer.check()) {
+ skidding_timer.start(SKID_TIME);
++#ifndef GP2X
+ play_sound(sounds[SND_SKID], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_SKID);
++#endif
+ ax *= 2.5;
+ } else {
+ ax *= 2;
+@@ -391,9 +396,17 @@
+ jumping = true;
+ can_jump = false;
+ if (size == SMALL)
++#ifndef GP2X
+ play_sound(sounds[SND_JUMP], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_JUMP);
++#endif
+ else
++#ifndef GP2X
+ play_sound(sounds[SND_BIGJUMP], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_BIGJUMP);
++#endif
+ }
+ }
+ // Let go of jump key
+@@ -533,7 +546,11 @@
+ if(player_status.lives < MAX_LIVES)
+ ++player_status.lives;
+ /*We want to hear the sound even, if MAX_LIVES is reached*/
++#ifndef GP2X
+ play_sound(sounds[SND_LIFEUP], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_LIFEUP);
++#endif
+ }
+ }
+
+@@ -665,7 +682,11 @@
+ else
+ {
+ pbad_c->dying = DYING_FALLING;
++#ifndef GP2X
+ play_sound(sounds[SND_FALL], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_FALL);
++#endif
+ World::current()->add_score(pbad_c->base.x - scroll_x,
+ pbad_c->base.y,
+ 25 * player_status.score_multiplier);
+@@ -696,7 +717,12 @@
+ void
+ Player::kill(HurtMode mode)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_HURT], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_HURT);
++ updateSound();
++#endif
+
+ physic.set_velocity_x(0);
+
+@@ -734,7 +760,11 @@
+
+ bool Player::is_dead()
+ {
++#ifndef RES320X240
+ if(base.y > screen->h || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
++#else
++ if(base.y > 640 || base.x < scroll_x - AUTOSCROLL_DEAD_INTERVAL) // last condition can happen in auto-scrolling
++#endif
+ return true;
+ else
+ return false;
+@@ -760,9 +790,20 @@
+ }
+
+ /* Keep in-bounds, vertically: */
++#ifndef RES320X240
+ if (base.y > screen->h)
++#else
++ if (base.y > 640)
++#endif
+ {
+ kill(KILL);
++#ifdef GP2X
++ float wait=SDL_GetTicks()+800;
++ while ( wait > SDL_GetTicks()) {
++ updateSound();
++ }
++#endif
++
+ }
+
+ if(base.x < scroll_x && (!back_scrolling || hor_autoscroll)) // can happen if back scrolling is disabled
+@@ -777,7 +818,6 @@
+ if(base.x + base.width > scroll_x + screen->w)
+ base.x = scroll_x + screen->w - base.width;
+ }
+-
+ }
+
+ // EOF //
+diff -ur supertux-0.1.3/src/resources.cpp supertux-0.1.3-gp2x/src/resources.cpp
+--- supertux-0.1.3/src/resources.cpp 2005-07-02 15:20:14.000000000 +0300
++++ supertux-0.1.3-gp2x/src/resources.cpp 2006-04-22 13:14:01.000000000 +0300
+@@ -18,6 +18,7 @@
+ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ #include "globals.h"
++#include "sound.h"
+ #include "scene.h"
+ #include "player.h"
+ #include "badguy.h"
+@@ -187,11 +188,13 @@
+ // This is also true with if (use_music)
+ Send a mail to me: neoneurone@users.sf.net, if you have another opinion. :)
+ */
++#ifndef GP2X
+ for (i = 0; i < NUM_SOUNDS; i++)
+ sounds[i] = load_sound(datadir + soundfilenames[i]);
++#endif
+
+ /* Herring song */
+- herring_song = music_manager->load_music(datadir + "/music/SALCON.MOD");
++ herring_song = music_manager->load_music(datadir + "/music/SALCON.MOD");
+ level_end_song = music_manager->load_music(datadir + "/music/leveldone.mod");
+ }
+
+@@ -223,8 +226,10 @@
+
+ delete tux_life;
+
++#ifndef GP2X
+ for (i = 0; i < NUM_SOUNDS; i++)
+ free_chunk(sounds[i]);
++#endif
+
+ delete sprite_manager;
+ sprite_manager = 0;
+diff -ur supertux-0.1.3/src/screen.cpp supertux-0.1.3-gp2x/src/screen.cpp
+--- supertux-0.1.3/src/screen.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/screen.cpp 2006-04-14 18:18:47.000000000 +0300
+@@ -81,7 +81,6 @@
+ else
+ {
+ #endif
+-
+ for(float y = 0; y < 480; y += 2)
+ fillrect(0, (int)y, 640, 2,
+ (int)(((float)(top_clr.red-bot_clr.red)/(0-480)) * y + top_clr.red),
+@@ -199,11 +198,23 @@
+ SDL_UnlockSurface(screen);
+ }
+ /* Update just the part of the display that we've changed */
++#ifndef RES320X240
+ SDL_UpdateRect(screen, x, y, 1, 1);
++#else
++ SDL_UpdateRect(screen, x/2, y/2, 1, 1);
++#endif
+ }
+
+ void drawline(int x1, int y1, int x2, int y2, int r, int g, int b, int a)
+ {
++
++#ifdef RES320X240
++ x1=x1/2;
++ x2=x2/2;
++ y1=y1/2;
++ y2=y2/2;
++#endif
++
+ #ifndef NOOPENGL
+ if(use_gl)
+ {
+@@ -280,6 +291,13 @@
+ y += h;
+ h = -h;
+ }
++
++#ifdef RES320X240
++ x=x;
++ y=y/2;
++ w=w/2;
++ h=h/2;
++#endif
+
+ #ifndef NOOPENGL
+ if(use_gl)
+@@ -367,6 +385,9 @@
+ void update_rect(SDL_Surface *scr, Sint32 x, Sint32 y, Sint32 w, Sint32 h)
+ {
+ if(!use_gl)
++#ifndef RES320X240
++ SDL_UpdateRect(scr, x, y, w, h);
++#else
+ SDL_UpdateRect(scr, x, y, w, h);
++#endif
+ }
+-
+diff -ur supertux-0.1.3/src/setup.cpp supertux-0.1.3-gp2x/src/setup.cpp
+--- supertux-0.1.3/src/setup.cpp 2005-07-08 15:19:17.000000000 +0300
++++ supertux-0.1.3-gp2x/src/setup.cpp 2006-05-03 23:32:49.000000000 +0300
+@@ -62,10 +62,19 @@
+ #define DATA_PREFIX "./data/"
+ #endif
+
+-/* Screen proprities: */
++/* Screen properties: */
+ /* Don't use this to test for the actual screen sizes. Use screen->w/h instead! */
++#ifndef RES320X240
+ #define SCREEN_W 640
+ #define SCREEN_H 480
++#else
++#define SCREEN_W 320
++#define SCREEN_H 240
++#endif
++
++#ifdef GP2X
++#define DATA_PREFIX "data/"
++#endif
+
+ /* Local function prototypes: */
+
+@@ -308,10 +317,14 @@
+ char str[1024];
+ /* Get home directory (from $HOME variable)... if we can't determine it,
+ use the current directory ("."): */
++#ifndef GP2X
+ if (getenv("HOME") != NULL)
+ home = getenv("HOME");
+ else
+ home = ".";
++#else
++ home = ".";
++#endif
+
+ st_dir = (char *) malloc(sizeof(char) * (strlen(home) +
+ strlen("/.supertux") + 1));
+@@ -340,9 +353,10 @@
+ // User has not that a datadir, so we try some magic
+ if (datadir.empty())
+ {
+-#ifndef WIN32
+ // Detect datadir
+ char exe_file[PATH_MAX];
++
++#ifndef WIN32
+ if (readlink("/proc/self/exe", exe_file, PATH_MAX) < 0)
+ {
+ puts("Couldn't read /proc/self/exe, using default path: " DATA_PREFIX);
+@@ -358,7 +372,12 @@
+ datadir = exedir + "../share/supertux"; // SuperTux run from PATH
+ if (access(datadir.c_str(), F_OK) != 0)
+ { // If all fails, fall back to compiled path
+- datadir = DATA_PREFIX;
++ datadir = exedir + "./data"; // SuperTux run with data in same path as executable
++ if (access(datadir.c_str(), F_OK) != 0)
++ {
++ // If all fails, fall back to compiled path
++ datadir = DATA_PREFIX;
++ }
+ }
+ }
+ }
+@@ -375,7 +394,8 @@
+ main_menu = new Menu();
+ options_menu = new Menu();
+ options_keys_menu = new Menu();
+- options_joystick_menu = new Menu();
++ options_joystick_axis_menu = new Menu();
++ options_joystick_button_menu = new Menu();
+ load_game_menu = new Menu();
+ save_game_menu = new Menu();
+ game_menu = new Menu();
+@@ -384,22 +404,27 @@
+ contrib_subset_menu = new Menu();
+ worldmap_menu = new Menu();
+
+- main_menu->set_pos(screen->w/2, 335);
++ main_menu->set_pos(screen->w/2, (int)(335)+20);
+ main_menu->additem(MN_GOTO, "Start Game",0,load_game_menu, MNID_STARTGAME);
+ main_menu->additem(MN_GOTO, "Bonus Levels",0,contrib_menu, MNID_CONTRIB);
+ main_menu->additem(MN_GOTO, "Options",0,options_menu, MNID_OPTIONMENU);
++
++#ifndef GP2X
+ main_menu->additem(MN_ACTION,"Level Editor",0,0, MNID_LEVELEDITOR);
++#endif
+ main_menu->additem(MN_ACTION,"Credits",0,0, MNID_CREDITS);
+ main_menu->additem(MN_ACTION,"Quit",0,0, MNID_QUITMAINMENU);
+
+ options_menu->additem(MN_LABEL,"Options",0,0);
+ options_menu->additem(MN_HL,"",0,0);
++#ifndef GP2X
+ #ifndef NOOPENGL
+ options_menu->additem(MN_TOGGLE,"OpenGL",use_gl,0, MNID_OPENGL);
+ #else
+ options_menu->additem(MN_DEACTIVE,"OpenGL (not supported)",use_gl, 0, MNID_OPENGL);
+ #endif
+ options_menu->additem(MN_TOGGLE,"Fullscreen",use_fullscreen,0, MNID_FULLSCREEN);
++#endif
+ if(audio_device)
+ {
+ options_menu->additem(MN_TOGGLE,"Sound ", use_sound,0, MNID_SOUND);
+@@ -411,10 +436,15 @@
+ options_menu->additem(MN_DEACTIVE,"Music ", false,0, MNID_MUSIC);
+ }
+ options_menu->additem(MN_TOGGLE,"Show FPS ",show_fps,0, MNID_SHOWFPS);
++#ifndef GP2X
+ options_menu->additem(MN_GOTO,"Keyboard Setup",0,options_keys_menu);
++#endif
+
+ //if(use_joystick)
+- // options_menu->additem(MN_GOTO,"Joystick Setup",0,options_joystick_menu);
++#ifdef GP2X
++ options_menu->additem(MN_GOTO,"Joystick Move Setup",0,options_joystick_axis_menu);
++ options_menu->additem(MN_GOTO,"Joystick Action Setup",0,options_joystick_button_menu);
++#endif
+
+ options_menu->additem(MN_HL,"",0,0);
+ options_menu->additem(MN_BACK,"Back",0,0);
+@@ -429,6 +459,7 @@
+ options_keys_menu->additem(MN_HL,"",0,0);
+ options_keys_menu->additem(MN_BACK,"Back",0,0);
+
++#ifndef GP2X
+ if(use_joystick)
+ {
+ options_joystick_menu->additem(MN_LABEL,"Joystick Setup",0,0);
+@@ -442,6 +473,20 @@
+ options_joystick_menu->additem(MN_HL,"",0,0);
+ options_joystick_menu->additem(MN_BACK,"Back",0,0);
+ }
++#else
++ options_joystick_axis_menu->additem(MN_LABEL,"Joystick Move Setup",0,0);
++ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Up", 0,0, 11,&joystick_keymap.up_button);
++ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Down", 0,0, 12,&joystick_keymap.down_button);
++ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Left", 0,0, 13,&joystick_keymap.left_button);
++ options_joystick_axis_menu->additem(MN_CONTROLFIELD,"Right", 0,0, 14,&joystick_keymap.right_button);
++ options_joystick_axis_menu->additem(MN_BACK,"Back",0,0);
++
++ options_joystick_button_menu->additem(MN_LABEL,"Joystick Action Setup",0,0);
++ options_joystick_button_menu->additem(MN_CONTROLFIELD,"Jump", 0,0, 15,&joystick_keymap.a_button);
++ options_joystick_button_menu->additem(MN_CONTROLFIELD,"Shoot/Run", 0,0, 16,&joystick_keymap.b_button);
++ options_joystick_button_menu->additem(MN_BACK,"Back",0,0);
++#endif
++
+
+ load_game_menu->additem(MN_LABEL,"Start Game",0,0);
+ load_game_menu->additem(MN_HL,"",0,0);
+@@ -576,9 +621,10 @@
+
+ srand(SDL_GetTicks());
+
++#ifndef GP2X
+ /* Set icon image: */
+-
+ seticon();
++#endif
+
+ /* Unicode needed for input handling: */
+
+@@ -586,13 +632,32 @@
+
+ /* Load global images: */
+
++#ifndef RES320X240
++ white_text = new Text(datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18);
++#else
++ white_text = new Text(datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9);
++ fadeout();
++#endif
++
++
++#ifndef RES320X240
+ black_text = new Text(datadir + "/images/status/letters-black.png", TEXT_TEXT, 16,18);
++#else
++ black_text = new Text(datadir + "/images/status/letters-black.png", TEXT_TEXT, 8,9);
++#endif
++#ifndef RES320X240
+ gold_text = new Text(datadir + "/images/status/letters-gold.png", TEXT_TEXT, 16,18);
++#else
++ gold_text = new Text(datadir + "/images/status/letters-gold.png", TEXT_TEXT, 8,9);
++#endif
+ silver_text = new Text(datadir + "/images/status/letters-silver.png", TEXT_TEXT, 16,18);
++#ifndef RES320X240
+ blue_text = new Text(datadir + "/images/status/letters-blue.png", TEXT_TEXT, 16,18);
++#else
++ blue_text = new Text(datadir + "/images/status/letters-blue.png", TEXT_TEXT, 8,9);
++#endif
+ red_text = new Text(datadir + "/images/status/letters-red.png", TEXT_TEXT, 16,18);
+ green_text = new Text(datadir + "/images/status/letters-green.png", TEXT_TEXT, 16,18);
+- white_text = new Text(datadir + "/images/status/letters-white.png", TEXT_TEXT, 16,18);
+ white_small_text = new Text(datadir + "/images/status/letters-white-small.png", TEXT_TEXT, 8,9);
+ white_big_text = new Text(datadir + "/images/status/letters-white-big.png", TEXT_TEXT, 20,22);
+ yellow_nums = new Text(datadir + "/images/status/numbers.png", TEXT_NUM, 32,32);
+@@ -665,14 +736,22 @@
+ Surface::reload_all();
+
+ /* Set window manager stuff: */
++#ifndef GP2X_VERSION
+ SDL_WM_SetCaption("SuperTux " VERSION, "SuperTux");
++#endif
+ }
+
+ void st_video_setup_sdl(void)
+ {
+ if (use_fullscreen)
+ {
++#ifndef GP2X
+ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, SDL_FULLSCREEN ) ; /* | SDL_HWSURFACE); */
++#else
++// screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_HWSURFACE | SDL_DOUBLEBUF ) ; /* GP2X */
++ printf("screen width: %d, height: %d\n",SCREEN_W, SCREEN_H);
++ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE ) ; /* GP2X */
++#endif
+ if (screen == NULL)
+ {
+ fprintf(stderr,
+@@ -685,14 +764,22 @@
+ }
+ else
+ {
++#ifndef GP2X
+ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, SDL_HWSURFACE | SDL_DOUBLEBUF );
+-
++#else
++// screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_HWSURFACE | SDL_DOUBLEBUF ) ; /* GP2X */
++ screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 16, SDL_SWSURFACE ) ; /* GP2X */
++#endif
+ if (screen == NULL)
+ {
+ fprintf(stderr,
+ "\nError: I could not set up video for 640x480 mode.\n"
+ "The Simple DirectMedia error that occured was:\n"
+ "%s\n\n", SDL_GetError());
++#ifdef GP2X_VERSION
++ chdir("/usr/gp2x");
++ execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
++#endif
+ exit(1);
+ }
+ }
+@@ -790,6 +877,7 @@
+
+ use_joystick = false;
+ }
++#ifndef GP2X
+ else
+ {
+ if (SDL_JoystickNumAxes(js) < 2)
+@@ -811,6 +899,7 @@
+ }
+ }
+ }
++#endif
+ }
+ }
+ }
+@@ -844,12 +933,17 @@
+ }
+ }
+
+-
++ audio_device = true;
++
+ /* Open sound silently regarless the value of "use_sound": */
+
+ if (audio_device)
+ {
++#ifndef GP2X
+ if (open_audio(44100, AUDIO_S16, 2, 2048) < 0)
++#else
++ if (open_audio(44100, AUDIO_S16, 1, 1024) < 0)
++#endif
+ {
+ /* only print out message if sound or music
+ was not disabled at command-line
+@@ -878,6 +972,12 @@
+ close_audio();
+ SDL_Quit();
+ saveconfig();
++
++#ifdef GP2X
++ chdir("/usr/gp2x");
++ execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
++#endif
++
+ }
+
+ /* --- ABORT! --- */
+@@ -893,6 +993,7 @@
+
+ void seticon(void)
+ {
++#ifndef GP2X
+ // int masklen;
+ // Uint8 * mask;
+ SDL_Surface * icon;
+@@ -927,6 +1028,7 @@
+
+ // free(mask);
+ SDL_FreeSurface(icon);
++#endif
+ }
+
+
+@@ -956,6 +1058,7 @@
+ }
+ else if (strcmp(argv[i], "--joymap") == 0)
+ {
++#ifndef GP2X
+ assert(i+1 < argc);
+ if (sscanf(argv[++i],
+ "%d:%d:%d:%d:%d",
+@@ -976,6 +1079,7 @@
+ << " B-Button: " << joystick_keymap.b_button << "\n"
+ << " Start-Button: " << joystick_keymap.start_button << std::endl;
+ }
++#endif
+ }
+ else if (strcmp(argv[i], "--leveleditor") == 0)
+ {
+diff -ur supertux-0.1.3/src/sound.cpp supertux-0.1.3-gp2x/src/sound.cpp
+--- supertux-0.1.3/src/sound.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/sound.cpp 2006-04-22 02:07:57.000000000 +0300
+@@ -22,6 +22,9 @@
+ #include "globals.h"
+ #include "sound.h"
+ #include "setup.h"
++#ifdef GP2X
++#include <string.h>
++#endif
+
+ /*global variable*/
+ bool use_sound = true; /* handle sound on/off menu and command-line option */
+@@ -54,12 +57,21 @@
+
+ #include <SDL_mixer.h>
+
++#ifndef GP2X
+ Mix_Chunk * sounds[NUM_SOUNDS];
++#else
+
+-/* --- OPEN THE AUDIO DEVICE --- */
++#include <mikmod.h>
++static MODULE *music=NULL;
++static SAMPLE *chunk[NUM_SOUNDS];
++static int chunkFlag[NUM_SOUNDS];
++#endif
+
++/* --- OPEN THE AUDIO DEVICE --- */
+ int open_audio (int frequency, Uint16 format, int channels, int chunksize)
+ {
++// close_audio();
++#ifndef GP2X
+ if (Mix_OpenAudio( frequency, format, channels, chunksize ) < 0)
+ return -1;
+
+@@ -74,20 +86,93 @@
+ /* prepare the spanning effects */
+ Mix_SetPanning( SOUND_LEFT_SPEAKER, 230, 24 );
+ Mix_SetPanning( SOUND_RIGHT_SPEAKER, 24, 230 );
++#else
++ if (drv_oss.Name) // Valid OSS driver
++ {
++ if (drv_oss.CommandLine) // Valid Commandline
++ {
++ drv_oss.CommandLine("buffer=14,count=2");
++ }
++ MikMod_RegisterDriver(&drv_oss);
++ }
++ if (drv_alsa.Name) // Valid ALSA driver
++ {
++ if (drv_alsa.CommandLine) // Valid Commandline
++ {
++ drv_alsa.CommandLine("buffer=14");
++ }
++ MikMod_RegisterDriver(&drv_alsa);
++ }
++ MikMod_RegisterDriver(&drv_nos);
++
++ // register standard tracker
++ MikMod_RegisterAllLoaders();
++
++ // Note, the md_mode flags are already set by default
++ md_mode |= DMODE_SOFT_SNDFX | DMODE_SOFT_MUSIC;
++
++ if (MikMod_Init("")) // Command paramenters are ignored as all drivers are registered
++ {
++ printf("mikmod init war fürn arsch\n");
++ return 1;
++ }
++
++ load_sounds();
++
++ // get ready to play
++ MikMod_EnableOutput();
++ md_volume =64;
++ md_sndfxvolume = 64;
++ //md_musicvolume = md_sndfxvolume = 64;
++
++ use_sound = true;
++ audio_device=true;
++
++#endif
+ return 0;
+-}
+
++}
+
+ /* --- CLOSE THE AUDIO DEVICE --- */
+
+ void close_audio( void )
+ {
++#ifndef GP2X
+ if (audio_device) {
+ Mix_UnregisterAllEffects( SOUND_LEFT_SPEAKER );
+ Mix_UnregisterAllEffects( SOUND_RIGHT_SPEAKER );
+ Mix_CloseAudio();
+ }
++#else
++ int i;
++ if (! audio_device) return;
++
++ MikMod_DisableOutput();
++ Player_Stop();
++ MikMod_Update();
++
++ if (music) {
++ Player_Free(music);
++ music = NULL;
++ }
++
++ for ( i=0 ; i<NUM_SOUNDS ; i++ ) {
++ if ( chunk[i] ) {
++ Sample_Free(chunk[i]);
++ }
++ }
++
++ MikMod_Update();
++ MikMod_Exit();
++#endif
++}
++
++#ifdef GP2X
++void updateSound ( void ) {
++ if (! audio_device) return;
++ MikMod_Update();
+ }
++#endif
+
+
+ /* --- LOAD A SOUND --- */
+@@ -105,6 +190,30 @@
+ return(snd);
+ }
+
++#ifdef GP2X
++static void load_sounds() {
++ int i;
++ std::string name;
++ char file[100];
++
++ for ( i=0 ; i<NUM_SOUNDS ; i++ ) {
++ name = datadir + soundfilenames[i];
++ printf("loading: %s\n",name.c_str());
++ snprintf(file,sizeof(file),"%s",name.c_str());
++ if ( NULL == (chunk[i] = Sample_Load(file)) ) {
++ fprintf(stderr, "Couldn't load: %s\n", file);
++ use_sound = 0;
++ return;
++ }
++ chunkFlag[i] = 0;
++ }
++
++ // reserve voices for sound effects
++ MikMod_SetNumVoices(-1, 4);
++}
++#endif
++
++
+ /* --- PLAY A SOUND ON LEFT OR RIGHT OR CENTER SPEAKER --- */
+
+ void play_sound(Mix_Chunk * snd, enum Sound_Speaker whichSpeaker)
+@@ -130,8 +239,45 @@
+ }
+ }
+
++
++#ifdef GP2X
++void play_chunk(int idx)
++{
++ int cid;
++// if (use_sound) return;
++ cid = Sample_Play (chunk[idx], 0, 0);
++ Voice_SetPanning(cid, PAN_CENTER);
++ Voice_SetVolume(cid, 1000);
++}
++#endif
++
++
+ void free_chunk(Mix_Chunk *chunk)
+ {
+ Mix_FreeChunk( chunk );
+ }
+
++void sound_volume ( int vol )
++{
++#ifndef GP2X
++ static int volume = 10;
++
++ if ( vol == 1 ) volume-=5;
++ else if ( vol == 2 ) volume+=5;
++ Mix_Volume(-1,volume);
++#endif
++}
++
++#ifdef GP2X
++void increaseSoundVolume(void)
++{
++ if (md_volume > (256 - 13)) md_volume = 256;
++ else md_volume += 13;
++}
++
++void decreaseSoundVolume(void)
++{
++ if (md_volume < 13) md_volume = 0;
++ else md_volume -= 13;
++}
++#endif
+diff -ur supertux-0.1.3/src/sound.h supertux-0.1.3-gp2x/src/sound.h
+--- supertux-0.1.3/src/sound.h 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/sound.h 2006-04-21 00:17:09.000000000 +0300
+@@ -75,14 +75,27 @@
+ #include <SDL_mixer.h>
+
+ /* variables for stocking the sound and music */
++#ifndef GP2X
+ extern Mix_Chunk* sounds[NUM_SOUNDS];
++#endif
+
+ /* functions handling the sound and music */
+ int open_audio(int frequency, Uint16 format, int channels, int chunksize);
+ void close_audio( void );
+
++#ifndef GP2X
+ Mix_Chunk * load_sound(const std::string& file);
++#endif
+ void free_chunk(Mix_Chunk*chunk);
+ void play_sound(Mix_Chunk * snd, enum Sound_Speaker whichSpeaker);
++void sound_volume ( int vol );
+
+ #endif /*SUPERTUX_SOUND_H*/
++
++#ifdef GP2X
++void play_chunk(int idx);
++static void load_sounds();
++void updateSound ( void );
++void increaseSoundVolume(void);
++void decreaseSoundVolume(void);
++#endif
+diff -ur supertux-0.1.3/src/special.cpp supertux-0.1.3-gp2x/src/special.cpp
+--- supertux-0.1.3/src/special.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/special.cpp 2006-04-20 21:39:41.000000000 +0300
+@@ -105,12 +105,21 @@
+
+ base.ym = base.ym + 0.5 * frame_ratio;
+
++#ifndef RES320X240
+ if (base.x < scroll_x ||
+ base.x > scroll_x + screen->w ||
+ base.y > screen->h ||
+ issolid(base.x + 4, base.y + 2) ||
+ issolid(base.x, base.y + 2) ||
+ life_count <= 0)
++#else
++ if (base.x < scroll_x ||
++ base.x > scroll_x + 640 ||
++ base.y > 480 ||
++ issolid(base.x + 4, base.y + 2) ||
++ issolid(base.x, base.y + 2) ||
++ life_count <= 0)
++#endif
+ {
+ remove_me();
+ }
+@@ -120,8 +129,13 @@
+ void
+ Bullet::draw()
+ {
++#ifndef RES320X240
+ if (base.x >= scroll_x - base.width &&
+ base.x <= scroll_x + screen->w)
++#else
++ if (base.x >= scroll_x - base.width &&
++ base.x <= scroll_x + 640)
++#endif
+ {
+ img_bullet->draw(base.x - scroll_x, base.y);
+ }
+@@ -140,7 +154,7 @@
+ {
+ kind = kind_;
+ dir = dir_;
+-
++
+ base.width = 32;
+ base.height = 0;
+ base.x = x_;
+@@ -197,7 +211,11 @@
+ remove_me();
+ return;
+ }
++#ifndef RES320X240
+ if(base.y > screen->h) {
++#else
++ if(base.y > 640) {
++#endif
+ remove_me();
+ return;
+ }
+@@ -252,7 +270,12 @@
+ {
+ /* Rising up... */
+
++
++#ifndef RES320X240
+ dest.x = (int)(base.x - scroll_x);
++#else
++ dest.x = (int)(base.x - scroll_x)/2;
++#endif
+ dest.y = (int)(base.y + 32 - base.height);
+ dest.w = 32;
+ dest.h = (int)base.height;
+@@ -297,7 +320,11 @@
+ if(kind != UPGRADE_GROWUP)
+ return;
+
++#ifndef GP2X
+ play_sound(sounds[SND_BUMP_UPGRADE], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_BUMP_UPGRADE);
++#endif
+
+ // do a little jump and change direction
+ physic.set_velocity(-physic.get_velocity_x(), 3);
+@@ -329,18 +356,30 @@
+
+ if (kind == UPGRADE_GROWUP)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_EXCELLENT], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_EXCELLENT);
++#endif
+ pplayer->grow();
+ }
+ else if (kind == UPGRADE_ICEFLOWER)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_COFFEE);
++#endif
+ pplayer->grow();
+ pplayer->got_coffee = true;
+ }
+ else if (kind == UPGRADE_HERRING)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_HERRING], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_HERRING);
++#endif
+ pplayer->invincible_timer.start(TUX_INVINCIBLE_TIME);
+ World::current()->play_music(HERRING_MUSIC);
+ }
+@@ -348,7 +387,11 @@
+ {
+ if(player_status.lives < MAX_LIVES) {
+ player_status.lives++;
++#ifndef GP2X
+ play_sound(sounds[SND_LIFEUP], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_LIFEUP);
++#endif
+ }
+ }
+
+diff -ur supertux-0.1.3/src/text.cpp supertux-0.1.3-gp2x/src/text.cpp
+--- supertux-0.1.3/src/text.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/text.cpp 2006-04-22 01:59:36.000000000 +0300
+@@ -24,6 +24,7 @@
+ #include "defines.h"
+ #include "screen.h"
+ #include "text.h"
++#include "sound.h"
+
+ Text::Text(const std::string& file, int kind_, int w_, int h_)
+ {
+@@ -79,6 +80,7 @@
+ void
+ Text::draw(const char* text, int x, int y, int shadowsize, int update)
+ {
++
+ if(text != NULL)
+ {
+ if(shadowsize != 0)
+@@ -116,6 +118,9 @@
+ else if ( text[i] == '\n')
+ {
+ y += h + 2;
++#ifdef RES320X240
++ y+=6;
++#endif
+ j = 0;
+ }
+ }
+@@ -129,6 +134,9 @@
+ else if ( text[i] == '\n')
+ {
+ y += h + 2;
++#ifdef RES320X240
++ y+=6;
++#endif
+ j = 0;
+ }
+ }
+@@ -306,6 +314,24 @@
+ break;
+ }
+ break;
++
++#ifdef GP2X
++ case SDL_JOYBUTTONDOWN:
++ if ( event.jbutton.button == joystick_keymap.down_button ) {
++ speed += SPEED_INC;
++ }
++ if ( event.jbutton.button == joystick_keymap.up_button ) {
++ speed -= SPEED_INC;
++ }
++ if ( event.jbutton.button == joystick_keymap.b_button ) {
++ done = 1;
++ }
++ if ( event.jbutton.button == joystick_keymap.a_button ) {
++ scroll += SCROLL;
++ }
++ break;
++#endif
++
+ case SDL_QUIT:
+ done = 1;
+ break;
+@@ -330,21 +356,36 @@
+ white_small_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
+ A_HMIDDLE, A_TOP, 1);
+ y += white_small_text->h+ITEMS_SPACE;
++#ifdef RES320X240
++ y += 6;
++#endif
+ break;
+ case ' ':
+ white_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
+ A_HMIDDLE, A_TOP, 1);
+ y += white_text->h+ITEMS_SPACE;
++#ifdef RES320X240
++ y += 6;
++#endif
+ break;
+ case '-':
+- white_big_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll),
+- A_HMIDDLE, A_TOP, 3);
++#ifdef RES320X240
++ white_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll), A_HMIDDLE, A_TOP, 3);
++#else
++ white_big_text->drawf(names.item[i]+1, 0, screen->h+y-int(scroll), A_HMIDDLE, A_TOP, 3);
++#endif
+ y += white_big_text->h+ITEMS_SPACE;
++#ifdef RES320X240
++ y += 6;
++#endif
+ break;
+ default:
+ blue_text->drawf(names.item[i], 0, screen->h+y-int(scroll),
+ A_HMIDDLE, A_TOP, 1);
+ y += blue_text->h+ITEMS_SPACE;
++#ifdef RES320X240
++ y += 6;
++#endif
+ break;
+ }
+ }
+@@ -360,7 +401,13 @@
+ if(scroll < 0)
+ scroll = 0;
+
+- SDL_Delay(10);
++#ifndef GP2X
++ SDL_Delay(10);
++#else
++ SDL_Delay(2);
++ updateSound();
++#endif
++
+ }
+ string_list_free(&names);
+
+diff -ur supertux-0.1.3/src/texture.cpp supertux-0.1.3-gp2x/src/texture.cpp
+--- supertux-0.1.3/src/texture.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/texture.cpp 2006-04-10 14:29:03.000000000 +0300
+@@ -211,7 +211,8 @@
+ {
+ if (impl)
+ {
+- if (impl->draw(x, y, alpha, update) == -2)
++// if (impl->draw(x, y, alpha, update) == -2)
++ if (impl->draw(x/2, y/2, alpha, update) == -2)
+ reload();
+ }
+ }
+@@ -231,7 +232,8 @@
+ {
+ if (impl)
+ {
+- if (impl->draw_part(sx, sy, x, y, w, h, alpha, update) == -2)
++// if (impl->draw_part(sx, sy, x, y, w, h, alpha, update) == -2)
++ if (impl->draw_part(sx, sy, x, y/2, w, h, alpha, update) == -2)
+ reload();
+ }
+ }
+@@ -241,7 +243,8 @@
+ {
+ if (impl)
+ {
+- if (impl->draw_stretched(x, y, w, h, alpha, update) == -2)
++// if (impl->draw_stretched(x, y, w, h, alpha, update) == -2)
++ if (impl->draw_stretched(x/2, y/2, w, h, alpha, update) == -2)
+ reload();
+ }
+ }
+diff -ur supertux-0.1.3/src/title.cpp supertux-0.1.3-gp2x/src/title.cpp
+--- supertux-0.1.3/src/title.cpp 2005-07-08 15:19:17.000000000 +0300
++++ supertux-0.1.3-gp2x/src/title.cpp 2006-04-22 01:29:08.000000000 +0300
+@@ -51,6 +51,7 @@
+ #include "tile.h"
+ #include "resources.h"
+ #include "worldmap.h"
++#include "sound.h"
+
+ static Surface* bkg_title;
+ static Surface* logo;
+@@ -80,6 +81,10 @@
+
+ void generate_contrib_menu()
+ {
++#ifdef RES320X240
++ fadeout();
++#endif
++
+ string_list_type level_subsets = dsubdirs("/levels", "info");
+
+ free_contrib_menu();
+@@ -208,7 +213,7 @@
+ }
+
+ // Wrap around at the end of the level back to the beginnig
+- if(plevel->width * 32 - 320 < tux->base.x)
++ if((plevel->width * 32) - 320 < tux->base.x)
+ {
+ tux->level_begin();
+ scroll_x = 0;
+@@ -226,7 +231,6 @@
+ {
+ walking = false;
+ }
+-
+ world->draw();
+ }
+
+@@ -301,13 +305,26 @@
+
+ if (Menu::current() == main_menu)
+ logo->draw( 160, 30);
+-
++
++#ifndef RES320X240
+ white_small_text->draw(" SuperTux " VERSION "\n"
+ "Copyright (c) 2003 SuperTux Devel Team\n"
+ "This game comes with ABSOLUTELY NO WARRANTY. This is free software, and you\n"
+ "are welcome to redistribute it under certain conditions; see the file COPYING\n"
+ "for details.\n",
+ 0, 420, 0);
++#else
++ white_small_text->draw(" SuperTux " VERSION "\n"
++ "Copyright (c) 2003 SuperTux Devel Team\n"
++ "This game comes with ABSOLUTELY NO \n"
++ "WARRANTY. This is free software, and\n"
++ "you are welcome to redistribute it\n"
++ "under certain conditions; see the file\n"
++ "COPYING for details.\n",
++ 0, 360, 0);
++#endif
++
++ //updateSound();
+
+ /* Don't draw menu, if quit is true */
+ Menu* menu = Menu::current();
+@@ -337,10 +354,10 @@
+ break;
+ case MNID_CREDITS:
+ music_manager = new MusicManager();
+- menu_song = music_manager->load_music(datadir + "/music/credits.ogg");
++ menu_song = music_manager->load_music(datadir + "/music/credits.mod");
+ music_manager->halt_music();
+ music_manager->play_music(menu_song,0);
+- display_text_file("CREDITS", bkg_title, SCROLL_SPEED_CREDITS);
++ display_text_file("CREDITS", bkg_title, SCROLL_SPEED_CREDITS);
+ music_manager->halt_music();
+ menu_song = music_manager->load_music(datadir + "/music/theme.mod");
+ music_manager->play_music(menu_song);
+diff -ur supertux-0.1.3/src/world.cpp supertux-0.1.3-gp2x/src/world.cpp
+--- supertux-0.1.3/src/world.cpp 2005-06-22 00:16:07.000000000 +0300
++++ supertux-0.1.3-gp2x/src/world.cpp 2006-05-05 23:16:47.000000000 +0300
+@@ -206,6 +206,7 @@
+ }
+ }
+
++
+ /* Draw interactive tiles: */
+ for (y = 0; y < 15; ++y)
+ {
+@@ -255,6 +256,8 @@
+ {
+ (*p)->draw(scroll_x, 0, 1);
+ }
++
++ //updateSound();
+ }
+
+ void
+@@ -312,7 +315,12 @@
+
+ // the space that it takes for the screen to start scrolling, regarding
+ // screen bounds (in pixels)
++#ifndef RES320X240
+ #define X_SPACE (400-16)
++#else
++#define X_SPACE (80-16)
++#endif
++
+ // the time it takes to move the camera (in ms)
+ #define CHANGE_DIR_SCROLL_SPEED 2000
+
+@@ -388,8 +396,13 @@
+ // this code prevent the screen to scroll before the start or after the level's end
+ if(scroll_x < 0)
+ scroll_x = 0;
++#ifndef RES320X240
+ if(scroll_x > level->width * 32 - screen->w)
+ scroll_x = level->width * 32 - screen->w;
++#else
++ if(scroll_x > level->width * 32 - 640)
++ scroll_x = level->width * 32 - 640;
++#endif
+ }
+
+ void
+@@ -481,6 +494,10 @@
+ void
+ World::add_score(float x, float y, int s)
+ {
++#ifdef RES320X240
++ x=x/2;
++#endif
++
+ player_status.score += s;
+
+ FloatingScore* new_floating_score = new FloatingScore();
+@@ -547,8 +564,11 @@
+ Bullet new_bullet;
+ new_bullet.init(x,y,xm,dir);
+ bullets.push_back(new_bullet);
+-
++#ifndef GP2X
+ play_sound(sounds[SND_SHOOT], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_SHOOT);
++#endif
+ }
+
+ void
+@@ -608,8 +628,11 @@
+ counting_distros = false;
+ plevel->change(x, y, TM_IA, tile->next_tile);
+ }
+-
++#ifndef GP2X
+ play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_DISTRO);
++#endif
+ player_status.score = player_status.score + SCORE_DISTRO;
+ player_status.distros++;
+ }
+@@ -622,9 +645,13 @@
+ add_broken_brick(tile,
+ ((int)(x + 1) / 32) * 32,
+ (int)(y / 32) * 32);
+-
++
+ /* Get some score: */
++#ifndef GP2X
+ play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_BRICK);
++#endif
+ player_status.score = player_status.score + SCORE_BRICK;
+ }
+ }
+@@ -652,7 +679,11 @@
+ {
+ case 1: // Box with a distro!
+ add_bouncy_distro(posx, posy);
++#ifndef GP2X
+ play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_DISTRO);
++#endif
+ player_status.score = player_status.score + SCORE_DISTRO;
+ player_status.distros++;
+ break;
+@@ -662,7 +693,11 @@
+ add_upgrade(posx, posy, col_side, UPGRADE_GROWUP);
+ else /* Tux is big, add an iceflower: */
+ add_upgrade(posx, posy, col_side, UPGRADE_ICEFLOWER);
++#ifndef GP2X
+ play_sound(sounds[SND_UPGRADE], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_UPGRADE);
++#endif
+ break;
+
+ case 3: // Add a golden herring
+@@ -688,7 +723,11 @@
+ if (tile && tile->distro)
+ {
+ level->change(x, y, TM_IA, tile->next_tile);
++#ifndef GP2X
+ play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_DISTRO);
++#endif
+
+ if (bounciness == BOUNCE)
+ {
+diff -ur supertux-0.1.3/src/worldmap.cpp supertux-0.1.3-gp2x/src/worldmap.cpp
+--- supertux-0.1.3/src/worldmap.cpp 2005-07-08 15:19:17.000000000 +0300
++++ supertux-0.1.3-gp2x/src/worldmap.cpp 2006-05-05 22:54:04.000000000 +0300
+@@ -376,11 +376,11 @@
+ {
+ tile_manager = new TileManager();
+
+- width = 20;
+- height = 15;
++ width = (int)(20);
++ height = (int)(15);
+
+- start_x = 4;
+- start_y = 5;
++ start_x = int(4);
++ start_y = int(5);
+
+ passive_message_timer.init(true);
+
+@@ -395,7 +395,7 @@
+ enter_level = false;
+
+ name = "<no file>";
+- music = "SALCON.MOD";
++ music = "salcon.mod";
+ }
+
+ WorldMap::~WorldMap()
+@@ -589,7 +589,8 @@
+ break;
+ }
+ break;
+-
++
++#ifndef GP2X
+ case SDL_JOYAXISMOTION:
+ if (event.jaxis.axis == joystick_keymap.x_axis)
+ {
+@@ -617,13 +618,29 @@
+ if (event.jhat.value == SDL_HAT_RIGHT)
+ input_direction = D_EAST;
+ break;
+-
++#endif
+ case SDL_JOYBUTTONDOWN:
++#ifndef GP2X
+ if (event.jbutton.button == joystick_keymap.b_button)
+ enter_level = true;
+ else if (event.jbutton.button == joystick_keymap.start_button)
+ on_escape_press();
+ break;
++#else
++ if (event.jbutton.button == joystick_keymap.a_button)
++ enter_level = true;
++ else if (event.jbutton.button == joystick_keymap.start_button)
++ on_escape_press();
++ else if (event.jbutton.button == joystick_keymap.up_button)
++ input_direction = D_NORTH;
++ else if (event.jbutton.button == joystick_keymap.down_button)
++ input_direction = D_SOUTH;
++ else if (event.jbutton.button == joystick_keymap.right_button)
++ input_direction = D_EAST;
++ else if (event.jbutton.button == joystick_keymap.left_button)
++ input_direction = D_WEST;
++ break;
++#endif
+
+ default:
+ break;
+@@ -769,13 +786,13 @@
+ {
+ MusicRef theme =
+ music_manager->load_music(datadir + "/music/theme.mod");
+- MusicRef credits = music_manager->load_music(datadir + "/music/credits.ogg");
++ MusicRef credits = music_manager->load_music(datadir + "/music/credits.xm");
+ music_manager->play_music(theme);
+ // Display final credits and go back to the main menu
+ display_text_file(level->extro_filename,
+ "/images/background/extro.jpg", SCROLL_SPEED_MESSAGE);
+ music_manager->play_music(credits,0);
+- display_text_file("CREDITS",
++ display_text_file("CREDITS",
+ "/images/background/oiltux.jpg", SCROLL_SPEED_CREDITS);
+ music_manager->play_music(theme);
+ quit = true;
+@@ -812,7 +829,12 @@
+ if (level->x == tux->get_tile_pos().x &&
+ level->y == tux->get_tile_pos().y)
+ {
++#ifndef GP2X
+ play_sound(sounds[SND_TELEPORT], SOUND_CENTER_SPEAKER);
++#else
++ play_chunk(SND_TELEPORT);
++ updateSound();
++#endif
+ tux->back_direction = D_NONE;
+ tux->set_tile_pos(Point(level->teleport_dest_x, level->teleport_dest_y));
+ SDL_Delay(1000);
+@@ -914,26 +936,39 @@
+ void
+ WorldMap::draw_status()
+ {
++ int xdiv;
++
++#ifdef RES320X240
++ xdiv=2;
++#else
++ xdiv=1;
++#endif
++
+ char str[80];
+ sprintf(str, "%d", player_status.score);
+ white_text->draw("SCORE", 0, 0);
+- gold_text->draw(str, 96, 0);
++ gold_text->draw(str, (int)(96)/xdiv, 0);
+
+ sprintf(str, "%d", player_status.distros);
+- white_text->draw_align("COINS", 320-64, 0, A_LEFT, A_TOP);
+- gold_text->draw_align(str, 320+64, 0, A_RIGHT, A_TOP);
++ white_text->draw_align("COINS", (int)(320-64)/xdiv, 0, A_LEFT, A_TOP);
++ gold_text->draw_align(str, (int)(320+64)/xdiv, 0, A_RIGHT, A_TOP);
+
+- white_text->draw("LIVES", 480, 0);
++ white_text->draw("LIVES", (int)(480)/xdiv, 0);
+ if (player_status.lives >= 5)
+ {
+ sprintf(str, "%dx", player_status.lives);
+- gold_text->draw_align(str, 617, 0, A_RIGHT, A_TOP);
+- tux_life->draw(565+(18*3), 0);
++#ifdef RES320X240
++ gold_text->draw_align(str, (int)(617)/xdiv-5, 0, A_RIGHT, A_TOP);
++ tux_life->draw((int)((565-12+(18*3))), 0);
++#else
++ gold_text->draw_align(str, (int)(617), 0, A_RIGHT, A_TOP);
++ tux_life->draw((int)((565+(18*3))), 0);
++#endif
+ }
+ else
+ {
+ for(int i= 0; i < player_status.lives; ++i)
+- tux_life->draw(565+(18*i),0);
++ tux_life->draw((565+(18/xdiv*i)),0);
+ }
+
+ if (!tux->is_moving())
+@@ -945,7 +980,11 @@
+ {
+ if(!i->name.empty())
+ {
++#ifndef RES320X240
+ white_text->draw_align(i->title.c_str(), screen->w/2, screen->h, A_HMIDDLE, A_BOTTOM);
++#else
++ white_text->draw_align(i->title.c_str(), screen->w/2, 470, A_HMIDDLE, A_BOTTOM);
++#endif
+ }
+ else if (i->teleport_dest_x != -1) {
+ if(!i->teleport_message.empty())
+@@ -955,7 +994,7 @@
+ /* Display a message in the map, if any as been selected */
+ if(!i->display_map_message.empty() && !i->passive_message)
+ gold_text->draw_align(i->display_map_message.c_str(),
+- screen->w/2, screen->h - 30,A_HMIDDLE, A_BOTTOM);
++ screen->w/2, screen->h - (int)(30),A_HMIDDLE, A_BOTTOM);
+ break;
+ }
+ }
+@@ -964,7 +1003,7 @@
+ /* Display a passive message in the map, if needed */
+ if(passive_message_timer.check())
+ gold_text->draw_align(passive_message.c_str(),
+- screen->w/2, screen->h - 30,A_HMIDDLE, A_BOTTOM);
++ screen->w/2, screen->h - (int)(30),A_HMIDDLE, A_BOTTOM);
+ }
+
+ void
+@@ -997,6 +1036,7 @@
+ Point tux_pos = tux->get_pos();
+ if (1)
+ {
++#ifndef GP2X
+ offset.x = -tux_pos.x + screen->w/2;
+ offset.y = -tux_pos.y + screen->h/2;
+
+@@ -1005,6 +1045,16 @@
+
+ if (offset.x < screen->w - width*32) offset.x = screen->w - width*32;
+ if (offset.y < screen->h - height*32) offset.y = screen->h - height*32;
++#else
++ offset.x = -tux_pos.x + 640/2;
++ offset.y = -tux_pos.y + 480/2;
++
++ if (offset.x > 0) offset.x = 0;
++ if (offset.y > 0) offset.y = 0;
++
++ if (offset.x < 640 - width*32) offset.x = 640 - width*32;
++ if (offset.y < 480 - height*32) offset.y = 480 - height*32;
++#endif
+ }
+
+ draw(offset);
diff --git a/packages/supertux/files/img-resize.sh b/packages/supertux/files/img-resize.sh
new file mode 100644
index 0000000000..0197964193
--- /dev/null
+++ b/packages/supertux/files/img-resize.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+conv() {
+
+if [ ! -d org ]; then
+ mkdir org
+ mv *.jpg *.png org/
+fi
+
+for i in org/*; do
+ b=`basename $i`
+ ext=`expr "x$b" : 'x.*\.\(.*\)'`
+ if [ "$ext" == "png" ]; then
+ if [ $b == "tux-life.png" ]; then
+ cp $i _.png
+ else
+ convert $i -resize 50% -colors 64 _.png
+ fi
+ pngcrush -q _.png $b
+ elif [ "$ext" == "jpg" ]; then
+ convert $i -resize 50% -quality 60 $b
+ fi
+done
+rm _.png
+
+}
+
+conv
diff --git a/packages/supertux/files/supertux-smallsize-data.tar.bz2 b/packages/supertux/files/supertux-smallsize-data.tar.bz2
new file mode 100644
index 0000000000..740e4f4473
--- /dev/null
+++ b/packages/supertux/files/supertux-smallsize-data.tar.bz2
Binary files differ
diff --git a/packages/supertux/files/supertux.desktop b/packages/supertux/files/supertux.desktop
new file mode 100644
index 0000000000..8677a71301
--- /dev/null
+++ b/packages/supertux/files/supertux.desktop
@@ -0,0 +1,20 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=SuperTux
+Name[en]=SuperTux
+Name[de]=SuperTux
+Name[cs]=SuperTux
+GenericName=A Platform Game
+GenericName[en]=A Platform Game
+GenericName[de]=Ein Jump&Run Spiel
+GenericName[cs]=Plošinová hra
+Comment=A Super Mario inspired penguin platform game
+Comment[en]=A Super Mario inspired penguin platform game
+Comment[de]=Ein von Super Mario inspiriertes Pinguin Jump&Run Spiel
+Comment[cs]=PloÅ¡inovka inspirovaná SuperMariem s tuÄňákem Tuxem v hlavní roli
+Icon=supertux
+Exec=supertux
+Terminal=false
+StartupNotify=false
+Categories=Application;Game;ArcadeGame;
diff --git a/packages/supertux/files/supertux.png b/packages/supertux/files/supertux.png
new file mode 100644
index 0000000000..82ac69642c
--- /dev/null
+++ b/packages/supertux/files/supertux.png
Binary files differ
diff --git a/packages/supertux/supertux-qvga_0.1.3.bb b/packages/supertux/supertux-qvga_0.1.3.bb
new file mode 100644
index 0000000000..a38b8efbec
--- /dev/null
+++ b/packages/supertux/supertux-qvga_0.1.3.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "SuperTux is a classic 2D jump'n'run sidescroller game \
+in a style similar to the original SuperMario games (QVGA, size-optimized version)"
+SECTION = "games"
+PRIORITY = "optional"
+LICENSE = "GPL"
+DEPENDS = "libsdl-gfx imagemagick-native pngcrush-native"
+PR = "r0.20"
+
+APPIMAGE = "${WORKDIR}/supertux.png"
+APPDESKTOP = "${WORKDIR}/supertux.desktop"
+
+PACKAGES_prepend = " ${PN}-levels-bonus1 ${PN}-levels-bonus2 "
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/super-tux/supertux-${PV}.tar.bz2 \
+# file://supertux-qvga-gfx.tar.bz2 \
+ file://supertux-smallsize-data.tar.bz2 \
+ file://gp2x.patch;patch=1 \
+ file://img-resize.sh \
+ file://supertux.png \
+ file://supertux.desktop \
+# file://letters-black.png \
+# file://letters-blue.png \
+# file://letters-gold.png \
+# file://mousecursor.png \
+# file://credits.mod \
+ "
+S = "${WORKDIR}/supertux-${PV}"
+
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+EXTRA_OECONF = "--enable-320x240 --disable-opengl"
+
+inherit autotools sdl
+
+do_compile_prepend() {
+# for f in letters-black.png letters-blue.png letters-gold.png mousecursor.png; do
+# cp ${WORKDIR}/$f ${S}/data/images/status/
+# done
+ for d in background shared tilesets title worldmap; do
+ cd ${S}/data/images/$d
+ sh ${WORKDIR}/img-resize.sh
+ done
+}
+
+do_install_prepend() {
+ # *-fast.* music plays when time for a level is running out
+ # byte-wise, it's the same file with few bytes changes (for .mod's).
+ # Well, seller feature, what to say, but we won't waste megabytes on
+ # that. Folks should learn to control tempo in there player lib.
+ rm -f ${S}/data/music/*-fast.*
+ # ogg is too heavy for embedded systems
+ rm -f ${S}/data/music/*.ogg
+# cp ${WORKDIR}/*.mod ${S}/data/music/
+}
+
+FILES_${PN}-levels-bonus1 = "${datadir}/supertux/levels/bonus1 ${datadir}/supertux/levels/worldmaps/bonusisland1.stwm"
+FILES_${PN}-levels-bonus2 = "${datadir}/supertux/levels/bonus2 ${datadir}/supertux/levels/worldmaps/bonusisland2.stwm"
+FILES_${PN} += "${datadir}/supertux"
diff --git a/packages/supertux/supertux_0.1.2.bb b/packages/supertux/supertux_0.1.2.bb
index 42ea6039fa..3afa425f1a 100644
--- a/packages/supertux/supertux_0.1.2.bb
+++ b/packages/supertux/supertux_0.1.2.bb
@@ -1,16 +1,18 @@
-DESCRIPTION = "SuperTux is a classic 2D jump'n run sidescroller game \
+DESCRIPTION = "SuperTux is a classic 2D jump'n'run sidescroller game \
in a style similar to the original SuperMario games."
SECTION = "games"
PRIORITY = "optional"
-DEPENDS = "virtual/libsdl libsdl-mixer libsdl-image"
LICENSE = "GPL"
-PR = "r1"
+PR = "r4"
+
+APPIMAGE = "${WORKDIR}/supertux.png"
+APPDESKTOP = "${WORKDIR}/supertux.desktop"
SRC_URI = "${SOURCEFORGE_MIRROR}/super-tux/supertux-${PV}.tar.bz2 \
- http://ssel.vub.ac.be/Members/DennisWagelaar/download/zaurus/supertux-0.1.2-fp.patch.gz;patch=1"
+ http://ssel.vub.ac.be/Members/DennisWagelaar/download/zaurus/supertux-0.1.2-fp.patch.gz;patch=1 \
+ file://supertux.png"
export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+EXTRA_OECONF = "--disable-opengl"
-inherit autotools
-
-# FIXME: Add .desktop file for Opie/Qtopia
+inherit autotools sdl
diff --git a/packages/supertux/supertux_0.1.3.bb b/packages/supertux/supertux_0.1.3.bb
new file mode 100644
index 0000000000..f90670738a
--- /dev/null
+++ b/packages/supertux/supertux_0.1.3.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "SuperTux is a classic 2D jump'n'run sidescroller game \
+in a style similar to the original SuperMario games."
+SECTION = "games"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PR = "r1"
+
+APPIMAGE = "${WORKDIR}/supertux.png"
+APPDESKTOP = "${WORKDIR}/supertux.desktop"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/super-tux/supertux-${PV}.tar.bz2 \
+# http://ssel.vub.ac.be/Members/DennisWagelaar/download/zaurus/supertux-0.1.2-fp.patch.gz;patch=1 \
+ file://supertux.png \
+ file://supertux.desktop \
+ "
+
+export SDL_CONFIG = "${STAGING_BINDIR_CROSS}/sdl-config"
+EXTRA_OECONF = "--disable-opengl"
+
+inherit autotools sdl
+
+DEFAULT_PREFERENCE = "-1"
diff --git a/packages/swt/.mtn2git_empty b/packages/swt/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/swt/.mtn2git_empty
diff --git a/packages/swt/files/.mtn2git_empty b/packages/swt/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/swt/files/.mtn2git_empty
diff --git a/packages/swt/files/Makefile b/packages/swt/files/Makefile
new file mode 100644
index 0000000000..2eb3557cdd
--- /dev/null
+++ b/packages/swt/files/Makefile
@@ -0,0 +1,78 @@
+JAVA=swt-gtk-$(RELEASE).jar
+LIBRARIES=libswt.so libswt-pi.so libswt-mozilla.so
+CLEANFILES=*.files *.jar *.so* *-stamp
+
+RELEASE=OE_SWT_RELEASE
+SONAME_VERSION=OE_SWT_API_VERSION
+
+GCJ=gcj
+JAR=gjar
+JAVAC=javac -classpath .
+LDCONFIG=/sbin/ldconfig
+LN_S=ln -s
+RM=rm -f
+
+GCJFLAGS=-O2 -fPIC -fjni -shared
+
+LINK=$(GCJ) $(GCJFLAGS) -o $@ -Wl,-soname=lib$*.so.$(SONAME_VERSION)
+
+# Build without Jars
+#all:
+# $(MAKE) -f make_linux.mak make_swt make_atk make_cairo
+
+# Build with Jars
+all: $(JAVA)
+ $(MAKE) -f make_linux.mak make_swt make_atk make_cairo
+
+# all: $(JAVA) $(LIBRARIES)
+# $(MAKE) -f make_linux.mak make_swt make_atk make_gnome make_mozilla
+
+clean distclean:
+ $(RM) $(CLEANFILES)
+ $(RM) -r swt swt-pi swt-mozilla
+ -$(MAKE) -f make_linux.mak clean
+
+.PHONY: all clean distclean
+
+swt.files:
+ find org -name *.java \
+ -not -path org/eclipse/swt/internal\* \
+ -not -path org/eclipse/swt/browser\* | sort > $@
+
+swt-mozilla.files:
+ find org/eclipse/swt/browser org/eclipse/swt/internal/mozilla \
+ -name *.java | sort > $@
+
+swt-pi.files:
+ find org/eclipse/swt/internal -name *.java \
+ -not -path org/eclipse/swt/internal/mozilla\* | sort > $@
+
+%-stamp: %.files
+ mkdir -p $*
+ for i in `cat $<`; do \
+ if [ -e $*/$${i%java}class ]; then \
+ echo SKIPPING $$i; \
+ else \
+ echo $(JAVAC) -d $* $$i; \
+ $(JAVAC) -d $* $$i || exit $$?; \
+ fi \
+ done
+ touch $@
+
+%.jar: %-stamp
+ $(JAR) -C $* -cf $@ .
+
+lib%.so.$(RELEASE): %.jar
+ $(LINK) $<
+ $(LDCONFIG) -n .
+
+%.so: %.so.$(RELEASE)
+ $(LN_S) -f $< $@
+
+swt-gtk-$(RELEASE).jar: swt.jar swt-pi.jar swt-mozilla.jar
+ mkdir _jar
+ cd _jar && for i in $^; do $(JAR) -xf ../$$i || exit $$?; done
+ $(JAR) -C _jar -cf $@ org
+ rm -rf _jar
+
+.SECONDARY:
diff --git a/packages/swt/files/swt-hildon.patch b/packages/swt/files/swt-hildon.patch
new file mode 100644
index 0000000000..728dd3070c
--- /dev/null
+++ b/packages/swt/files/swt-hildon.patch
@@ -0,0 +1,128 @@
+Index: swt-hildon/swt-source/make_linux.mak
+===================================================================
+--- swt-hildon.orig/swt-source/make_linux.mak 2008-01-08 09:35:29.000000000 +0100
++++ swt-hildon/swt-source/make_linux.mak 2008-01-08 11:35:01.000000000 +0100
+@@ -45,8 +45,8 @@
+ CAIROLIBS = `pkg-config --libs-only-L cairo` -lcairo
+
+ # Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0)
+-GTKCFLAGS = `pkg-config --cflags gtk+-2.0`
+-GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
++GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1`
++GTKLIBS = -lhildon-1 `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
+
+ CDE_LIBS = -L$(CDE_HOME)/lib -R$(CDE_HOME)/lib -lXt -lX11 -lDtSvc
+
+@@ -74,8 +74,6 @@
+ -Wno-non-virtual-dtor \
+ -fPIC \
+ -I. \
+- -I$(JAVA_HOME)/include \
+- -I$(JAVA_HOME)/include/linux \
+ ${SWT_PTR_CFLAGS}
+ MOZILLALIBS = -shared -Wl,--version-script=mozilla_exports -Bsymbolic
+ MOZILLAEXCLUDES = -DNO_XPCOMGlueShutdown -DNO_XPCOMGlueStartup
+@@ -96,8 +94,6 @@
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DLINUX -DGTK \
+- -I$(JAVA_HOME)/include \
+- -I$(JAVA_HOME)/include/linux \
+ -fPIC \
+ ${SWT_PTR_CFLAGS}
+ LIBS = -shared -fPIC
+Index: swt-hildon/swt-source/os.c
+===================================================================
+--- swt-hildon.orig/swt-source/os.c 2008-01-08 09:35:29.000000000 +0100
++++ swt-hildon/swt-source/os.c 2008-01-08 09:37:00.000000000 +0100
+@@ -17,6 +17,9 @@
+ #include "os_structs.h"
+ #include "os_stats.h"
+
++#include <hildon/hildon-program.h>
++#include <hildon/hildon-window.h>
++
+ #define OS_NATIVE(func) Java_org_eclipse_swt_internal_gtk_OS_##func
+
+ #ifndef NO_Call
+@@ -7015,9 +7018,18 @@
+ JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1container_1add)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1)
+ {
++ GtkContainer *container = (GtkContainer *) arg0;
++ GtkWidget *widget = (GtkWidget *) arg1;
+ OS_NATIVE_ENTER(env, that, _1gtk_1container_1add_FUNC);
+- gtk_container_add((GtkContainer *)arg0, (GtkWidget *)arg1);
+- OS_NATIVE_EXIT(env, that, _1gtk_1container_1add_FUNC);
++ if (GTK_CHECK_TYPE (widget, GTK_TYPE_MENU)
++ && !strcmp(gtk_menu_get_title(GTK_MENU(widget)), "__main_menu__"))
++ {
++ hildon_window_set_menu(HILDON_WINDOW(container), GTK_MENU(widget));
++ }
++ else
++ gtk_container_add((GtkContainer *)arg0, (GtkWidget *)arg1);
++
++ OS_NATIVE_EXIT(env, that, _1gtk_1container_1add_FUNC);
+ }
+ #endif
+
+@@ -9121,9 +9133,12 @@
+ JNIEXPORT jint JNICALL OS_NATIVE(_1gtk_1menu_1bar_1new)
+ (JNIEnv *env, jclass that)
+ {
++ GtkWidget *menu;
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, _1gtk_1menu_1bar_1new_FUNC);
+- rc = (jint)gtk_menu_bar_new();
++ menu = gtk_menu_new();
++ gtk_menu_set_title(menu, "__main_menu__");
++ rc = (jint) menu;
+ OS_NATIVE_EXIT(env, that, _1gtk_1menu_1bar_1new_FUNC);
+ return rc;
+ }
+@@ -15464,8 +15479,22 @@
+ (JNIEnv *env, jclass that, jint arg0)
+ {
+ jint rc = 0;
++ HildonProgram *p;
++ GtkWidget *w;
+ OS_NATIVE_ENTER(env, that, _1gtk_1window_1new_FUNC);
+- rc = (jint)gtk_window_new((GtkWindowType)arg0);
++/*
++ if (GTK_WINDOW_TOPLEVEL == (GtkWindowType) arg0)
++ {
++*/
++ p = hildon_program_get_instance();
++ w = hildon_window_new();
++ hildon_program_add_window(p, HILDON_WINDOW(w));
++/*
++ }
++ else
++ w = gtk_window_new(GTK_WINDOW_POPUP);
++*/
++ rc = (jint) w;
+ OS_NATIVE_EXIT(env, that, _1gtk_1window_1new_FUNC);
+ return rc;
+ }
+Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
+===================================================================
+--- swt-hildon.orig/swt-source/org/eclipse/swt/widgets/Menu.java 2008-01-08 09:34:55.000000000 +0100
++++ swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java 2008-01-08 09:36:01.000000000 +0100
+@@ -259,9 +259,17 @@
+ if ((style & SWT.BAR) != 0) {
+ handle = OS.gtk_menu_bar_new ();
+ if (handle == 0) error (SWT.ERROR_NO_HANDLES);
++ if (parent instanceof Shell)
++ {
++ int /*long*/ shellHandle = ((Shell) parent).shellHandle;
++ OS.gtk_container_add (shellHandle, handle);
++ }
++ else
++ {
+ int /*long*/ vboxHandle = parent.vboxHandle;
+ OS.gtk_container_add (vboxHandle, handle);
+ OS.gtk_box_set_child_packing (vboxHandle, handle, false, true, 0, OS.GTK_PACK_START);
++ }
+ } else {
+ handle = OS.gtk_menu_new ();
+ if (handle == 0) error (SWT.ERROR_NO_HANDLES);
diff --git a/packages/swt/swt-gtk.inc b/packages/swt/swt-gtk.inc
new file mode 100644
index 0000000000..6afadf1cab
--- /dev/null
+++ b/packages/swt/swt-gtk.inc
@@ -0,0 +1,58 @@
+DESCRIPTION = "SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities"
+LICENSE = "CPL MPL LGPL"
+
+inherit java-library
+
+DEPENDS = "cairo gtk+ atk libxtst"
+
+S = "${WORKDIR}/swt-source"
+
+# A number which is used by SWT to mark the shared libraries. It can be found
+# in the version.txt file inside the source directory.
+SWTVERSION = ${@bb.fatal('SWTVERSION is not defined in this swt-gtk recipe!')}
+SWT_API_VERSION = ${@bb.fatal('SWT_API_VERSION is not defined in this swt-gtk recipe!')}
+
+do_unpackpost() {
+ if [ ! -d ${S} ]; then
+ mkdir ${S}
+ cd ${S}
+ fi
+
+ unzip -o ../src.zip
+ cp ../Makefile .
+
+ sed -i -e "s|RELEASE=OE_SWT_RELEASE|RELEASE=${PV}|" Makefile
+ sed -i -e "s|SONAME_VERSION=OE_SWT_API_VERSION|SONAME_VERSION=${SWT_API_VERSION}|" Makefile
+}
+
+do_compile() {
+ oe_runmake NATIVE_STATS="-I${STAGING_INCDIR}/classpath"
+}
+
+addtask unpackpost after do_unpack before do_patch
+
+do_install() {
+ oe_jarinstall swt-pi.jar
+ oe_jarinstall swt.jar
+ oe_jarinstall swt-gtk-${PV}.jar swt-gtk.jar
+
+ install -d ${D}${libdir_jni}
+ oe_libinstall -so libswt-atk-gtk-${SWTVERSION} ${D}/${libdir_jni}
+ oe_libinstall -so libswt-cairo-gtk-${SWTVERSION} ${D}/${libdir_jni}
+ oe_libinstall -so libswt-pi-gtk-${SWTVERSION} ${D}/${libdir_jni}
+ oe_libinstall -so libswt-gtk-${SWTVERSION} ${D}/${libdir_jni}
+}
+
+do_stage() {
+ oe_jarinstall -s swt-pi.jar
+ oe_jarinstall -s swt.jar
+ oe_jarinstall -s swt-gtk-${PV}.jar swt-gtk.jar
+}
+
+PACKAGES += "lib${PN}-jni"
+
+FILES_lib${PN}-jni = "${libdir_jni}/lib*.so*"
+
+RDEPENDS_${JPN} = "lib${PN}-jni"
+RPROVIDES_${JPN} = "libswt${SWT_API_VERSION}-gtk-java"
+
diff --git a/packages/swt/swt3.3-gtk_3.3.1.bb b/packages/swt/swt3.3-gtk_3.3.1.bb
new file mode 100644
index 0000000000..5b17853725
--- /dev/null
+++ b/packages/swt/swt3.3-gtk_3.3.1.bb
@@ -0,0 +1,10 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-${PV}-200710231652/swt-${PV}-gtk-linux-x86.zip \
+ file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3347"
+SWT_API_VERSION = "3.3"
+
+RCONFLICTS = "libswt3.4-gtk-java"
diff --git a/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
new file mode 100644
index 0000000000..628dcdd810
--- /dev/null
+++ b/packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
@@ -0,0 +1,7 @@
+require swt3.4-gtk_${PV}.bb
+
+PR = "r1"
+
+DEPENDS += "hildon-1"
+
+SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
diff --git a/packages/swt/swt3.4-gtk_3.3+3.4M3.bb b/packages/swt/swt3.4-gtk_3.3+3.4M3.bb
new file mode 100644
index 0000000000..5d411f1be6
--- /dev/null
+++ b/packages/swt/swt3.4-gtk_3.3+3.4M3.bb
@@ -0,0 +1,12 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/eclipse/downloads/drops/S-3.4M3-200711012000/swt-3.4M3-gtk-linux-x86.zip \
+ file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3416"
+SWT_API_VERSION = "3.4"
+
+PROVIDES = "swt3.4-gtk"
+
+RCONFLICTS = "libswt3.3-gtk-java"
diff --git a/packages/tasks/task-base.bb b/packages/tasks/task-base.bb
index 40ef6ddce8..8f2f7935eb 100644
--- a/packages/tasks/task-base.bb
+++ b/packages/tasks/task-base.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
-PR = "r56"
+PR = "r57"
inherit task
diff --git a/packages/tasks/task-openmoko-debug.bb b/packages/tasks/task-openmoko-debug.bb
index 8486aa01cf..0c2342183e 100644
--- a/packages/tasks/task-openmoko-debug.bb
+++ b/packages/tasks/task-openmoko-debug.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "OpenMoko: Debugging and Benchmarking Tools"
SECTION = "openmoko/base"
LICENSE = "MIT"
-PR = "r58"
+PR = "r59"
inherit task
@@ -15,6 +15,7 @@ RDEPENDS_task-openmoko-debug = "\
cu \
dbench \
fbgrab \
+ fbset \
fstests \
gdb \
gdbserver \
diff --git a/packages/tasks/task-openmoko-feed.bb b/packages/tasks/task-openmoko-feed.bb
index e1fbbabfde..97f24a7624 100644
--- a/packages/tasks/task-openmoko-feed.bb
+++ b/packages/tasks/task-openmoko-feed.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "OpenMoko: Misc. Feed Items"
SECTION = "openmoko/base"
LICENSE = "MIT"
-PR = "r17"
+PR = "r20"
inherit task
@@ -24,9 +24,10 @@ RDEPENDS_task-openmoko-feed = "\
nano \
ntpclient ntp \
openssh openssh-scp openssh-ssh openssh-sshd openssh-sftp openssh-misc \
- python python-pygtk python-pyserial \
+ python python-pygtk python-pyserial python-efl \
ruby \
libsdl-x11 libsdl-mixer libsdl-net libsdl-ttf \
+ settingsgui \
synergy \
tzdata \
tor \
diff --git a/packages/tasks/task-openmoko-python-devel.bb b/packages/tasks/task-openmoko-python-devel.bb
new file mode 100644
index 0000000000..37d64847f6
--- /dev/null
+++ b/packages/tasks/task-openmoko-python-devel.bb
@@ -0,0 +1,11 @@
+DESCRIPTION = "OpenMoko: Python Development Tools"
+SECTION = "openmoko/devel"
+LICENSE = "MIT"
+PR = "r1"
+
+inherit task
+
+RDEPENDS_task-openmoko-python-devel = "\
+ python-efl \
+ python-pygtk \
+"
diff --git a/packages/tasks/task-openmoko-toolchain-host.bb b/packages/tasks/task-openmoko-toolchain-host.bb
new file mode 100644
index 0000000000..31ac3bb746
--- /dev/null
+++ b/packages/tasks/task-openmoko-toolchain-host.bb
@@ -0,0 +1,26 @@
+require task-sdk-host.bb
+
+DESCRIPTION = "Packages for a standalone OpenMoko SDK or external toolchain"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PR = "r0"
+
+PACKAGES = "${PN}"
+
+RDEPENDS_${PN} += "\
+ openmoko-sample2-src \
+"
+require task-sdk-host.bb
+
+DESCRIPTION = "Packages for a standalone OpenMoko SDK or external toolchain"
+LICENSE = "MIT"
+ALLOW_EMPTY = "1"
+
+PR = "r0"
+
+PACKAGES = "${PN}"
+
+RDEPENDS_${PN} += "\
+ openmoko-sample2-src \
+"
diff --git a/packages/tasks/task-toolchain-openmoko-sdk.bb b/packages/tasks/task-openmoko-toolchain-target.bb
index bcb2d370a6..281884d051 100644
--- a/packages/tasks/task-toolchain-openmoko-sdk.bb
+++ b/packages/tasks/task-openmoko-toolchain-target.bb
@@ -26,6 +26,5 @@ RDEPENDS_${PN} = "\
libmokoui2-dev \
libmokopanelui2-dev \
libmokojournal2-dev \
- openmoko-sample2-src \
openmoko-toolchain-scripts \
"
diff --git a/packages/tasks/task-openprotium.bb b/packages/tasks/task-openprotium.bb
new file mode 100644
index 0000000000..4c5d762f8f
--- /dev/null
+++ b/packages/tasks/task-openprotium.bb
@@ -0,0 +1,52 @@
+DESCRIPTION = "Basic image for openprotium"
+HOMEPAGE = "http://www.openprotium.org"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+ALLOW_EMPTY = "1"
+PR = "r1"
+
+inherit task
+
+# be sure to build the kernel:
+DEPENDS = "virtual/kernel"
+
+# always make this one for testing.
+DISTRO_KERNEL_MODULES = "kernel-module-dummy"
+# do we still need this?
+DISTRO_KERNEL_MODULES += "kernel-module-af-packet"
+# unused for now
+#DISTRO_KERNEL_MODULES += "kernel-module-netconsole"
+
+# these are listed separately because the are not needed
+# for boot, but are needed by reflash, etc.
+DISTRO_EXTRA_RDEPENDS += "diffutils cpio findutils"
+
+# pick up the fw_set/get env utils.
+DISTRO_EXTRA_RDEPENDS += "u-boot-utils"
+
+RDEPENDS = " kernel \
+ base-files \
+ base-passwd \
+ netbase \
+ busybox \
+ openprotium-init \
+ initscripts-openprotium \
+ update-modules \
+ module-init-tools \
+ modutils-initscripts \
+ ipkg-collateral ipkg ipkg-link \
+ portmap \
+ e2fsprogs-blkid \
+ mdadm \
+ hdparm \
+ mtd-utils \
+ ${DISTRO_SSH_DAEMON} \
+ ${DISTRO_DEV_MANAGER} \
+ ${DISTRO_INIT_MANAGER} \
+ ${DISTRO_LOGIN_MANAGER} \
+ ${DISTRO_KERNEL_MODULES} \
+ ${MACHINE_EXTRA_RDEPENDS} \
+ ${DISTRO_EXTRA_RDEPENDS} "
+
+RRECOMMENDS += " \
+ ${DISTRO_EXTRA_RRECOMMENDS} \
+ ${MACHINE_EXTRA_RRECOMMENDS}"
diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb
index ab33153057..61daa7e089 100644
--- a/packages/tasks/task-python-everything.bb
+++ b/packages/tasks/task-python-everything.bb
@@ -1,7 +1,7 @@
DESCRIPTION= "Everything Python"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml23"
+PR = "ml24"
RDEPENDS = "\
python-ao \
@@ -11,6 +11,7 @@ RDEPENDS = "\
python-dialog \
python-pydirectfb \
python-efl \
+ python-efl-examples \
python-pycurl \
python-fam \
python-fnorb \
diff --git a/packages/tea/tea_17.3.5.bb b/packages/tea/tea_17.3.5.bb
index 7adf2a5136..c8dac8c94f 100644
--- a/packages/tea/tea_17.3.5.bb
+++ b/packages/tea/tea_17.3.5.bb
@@ -1,7 +1,8 @@
-DESCRIPTION = "Tea - a GTK based text editor tith highlighting and a lot of processing features"
+DESCRIPTION = "Tea - a GTK based text editor with highlighting and a lot of processing features"
SECTION = "gpe"
LICENSE = "GPL"
DEPENDS = "gtk+ gtksourceview"
+PR = "r1"
inherit autotools
diff --git a/packages/ttf-fonts/ttf.inc b/packages/ttf-fonts/ttf.inc
index 3f0eca3d5d..e0d1dd6a54 100644
--- a/packages/ttf-fonts/ttf.inc
+++ b/packages/ttf-fonts/ttf.inc
@@ -1,4 +1,4 @@
-SECTION = "x11/fonts"
+SECTION = "fonts"
PRIORITY = "optional"
PACKAGE_ARCH = "all"
#DEPENDS = "fontconfig opie-ttf-support"
diff --git a/packages/u-boot/files/fix-data-abort-from-sd-ombug799.patch b/packages/u-boot/files/fix-data-abort-from-sd-ombug799.patch
new file mode 100644
index 0000000000..98b84430ad
--- /dev/null
+++ b/packages/u-boot/files/fix-data-abort-from-sd-ombug799.patch
@@ -0,0 +1,11 @@
+--- git.orig/fs/ext2/ext2fs.c 2007-12-13 23:16:13.000000000 -0800
++++ git/fs/ext2/ext2fs.c 2007-12-13 23:16:41.000000000 -0800
+@@ -472,7 +472,7 @@
+ return (0);
+ }
+ if (dirent.namelen != 0) {
+- char filename[dirent.namelen + 1];
++ char filename[256];
+ ext2fs_node_t fdiro;
+ int type = FILETYPE_UNKNOWN;
+
diff --git a/packages/u-boot/u-boot-openmoko_1.2.0+gitf34024d4a328e6edd906456da98d2c537155c4f7+svn2943.bb b/packages/u-boot/u-boot-openmoko_1.2.0+git+svn.bb
index 1cee1edf37..8c7ff5b94a 100644
--- a/packages/u-boot/u-boot-openmoko_1.2.0+gitf34024d4a328e6edd906456da98d2c537155c4f7+svn2943.bb
+++ b/packages/u-boot/u-boot-openmoko_1.2.0+git+svn.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) support"
-AUTHOR = "Harald Welte <laforge@openmoko.org>"
+AUTHOR = "Harald Welte <laforge@openmoko.org>, OpenMoko <openmoko-kernel@lists.openmoko.org>"
LICENSE = "GPL"
SECTION = "bootloader"
PRIORITY = "optional"
@@ -8,8 +8,9 @@ UBOOT_UPSTREAM_REV = "f34024d4a328e6edd906456da98d2c537155c4f7"
UBOOT_OPENMOKO_REV = "2943"
UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4"
-PV = "1.2.0+git${UBOOT_UPSTREAM_REV}+svn${UBOOT_OPENMOKO_REV}"
-PR = "r1"
+LOCALVERSION = "+git${UBOOT_UPSTREAM_REV}+svn${UBOOT_OPENMOKO_REV}"
+PV = "1.2.0${LOCALVERSION}"
+PR = "r2"
PROVIDES = "virtual/bootloader"
S = "${WORKDIR}/git"
@@ -32,8 +33,7 @@ do_quilt() {
do_svnrev() {
mv -f tools/setlocalversion tools/setlocalversion.old
- echo -n "echo " >>tools/setlocalversion
- echo ${PV} >>tools/setlocalversion
+ echo "echo ${LOCALVERSION}" >>tools/setlocalversion
}
do_configure_prepend() {
diff --git a/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
new file mode 100644
index 0000000000..7a9800f94a
--- /dev/null
+++ b/packages/u-boot/u-boot-openmoko_1.3.1+git+svn.bb
@@ -0,0 +1,85 @@
+DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) and Neo FreeRunner (GTA02) support"
+AUTHOR = "Harald Welte <laforge@openmoko.org>, OpenMoko <openmoko-kernel@lists.openmoko.org>"
+LICENSE = "GPL"
+SECTION = "bootloader"
+PRIORITY = "optional"
+
+UBOOT_UPSTREAM_REV = "0ec595243dc99edcd248bbcfbfd5a1dc860bde89"
+UBOOT_OPENMOKO_REV = "3817"
+UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 gta02v2 gta02v3 gta02v4"
+LOCALVERSION = "+git${UBOOT_UPSTREAM_REV}+svn${UBOOT_OPENMOKO_REV}"
+PV = "1.3.1${LOCALVERSION}"
+PR = "r1"
+
+PROVIDES = "virtual/bootloader"
+S = "${WORKDIR}/git"
+
+SRC_URI = "\
+ git://www.denx.de/git/u-boot.git;protocol=git;tag=${UBOOT_UPSTREAM_REV} \
+ svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;rev=${UBOOT_OPENMOKO_REV};proto=http \
+ file://uboot-20070311-tools_makefile_ln_sf.patch;patch=1 \
+ file://makefile-no-dirafter.patch;patch=1 \
+ file://fix-data-abort-from-sd-ombug799.patch;patch=1 \
+"
+
+EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}"
+TARGET_LDFLAGS = ""
+
+do_quilt() {
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ rm -Rf patches .pc
+}
+
+do_svnrev() {
+ mv -f tools/setlocalversion tools/setlocalversion.old
+ echo "echo ${LOCALVERSION}" >>tools/setlocalversion
+}
+
+do_configure_prepend() {
+ find . -name "*.mk" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
+ find . -name "Makefile" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
+ cat ${WORKDIR}/uboot-eabi-fix-HACK.patch |patch -p1
+}
+
+do_compile () {
+ chmod +x board/neo1973/gta*/split_by_variant.sh
+ for mach in ${UBOOT_MACHINES}
+ do
+ oe_runmake ${mach}_config
+ oe_runmake clean
+ find board -name lowlevel_foo.bin -exec rm '{}' \;
+ oe_runmake all
+ oe_runmake u-boot.udfu
+ if [ -f u-boot.udfu ]; then
+ mv u-boot.udfu u-boot_${mach}.bin
+ else
+ mv u-boot.bin u-boot_${mach}.bin
+ fi
+ if [ -f board/${mach}/lowlevel_foo.bin ]; then
+ mv board/${mach}/lowlevel_foo.bin \
+ lowlevel_foo_${mach}.bin
+ else
+ find board -name lowlevel_foo.bin \
+ -exec mv '{}' lowlevel_foo_${mach}.bin \;
+ fi
+ done
+}
+
+do_deploy () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ for mach in ${UBOOT_MACHINES}
+ do
+ install -m 0644 ${S}/u-boot_${mach}.bin ${DEPLOY_DIR_IMAGE}/u-boot-${mach}-${PV}-${PR}.bin
+ ln -sf ${DEPLOY_DIR_IMAGE}/u-boot-${mach}-${PV}-${PR}.bin ${DEPLOY_DIR_IMAGE}/uboot-${mach}-latest.bin
+ if [ -f ${S}/lowlevel_foo_${mach}.bin ]; then
+ install -m 0644 ${S}/lowlevel_foo_${mach}.bin ${DEPLOY_DIR_IMAGE}/lowlevel_foo-${mach}-${PV}-${PR}.bin
+ ln -sf ${DEPLOY_DIR_IMAGE}/lowlevel_foo-${mach}-${PV}-${PR}.bin ${DEPLOY_DIR_IMAGE}/lowlevel-foo-${mach}-latest.bin
+ fi
+ done
+ install -m 0755 tools/mkimage ${STAGING_BINDIR_NATIVE}/uboot-mkimage
+}
+
+do_deploy[dirs] = "${S}"
+addtask deploy before do_package after do_install
+addtask quilt before do_patch after do_unpack
+addtask svnrev before do_patch after do_quilt
diff --git a/packages/u-boot/u-boot-openmoko_svn.bb b/packages/u-boot/u-boot-openmoko_svn.bb
index 61e4516e1f..3ec97f2a77 100644
--- a/packages/u-boot/u-boot-openmoko_svn.bb
+++ b/packages/u-boot/u-boot-openmoko_svn.bb
@@ -1,4 +1,4 @@
-DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) support"
+DESCRIPTION = "U-boot bootloader w/ Neo1973 (GTA01) and Neo FreeRunner (GTA02) support"
AUTHOR = "Harald Welte <laforge@openmoko.org>"
LICENSE = "GPL"
SECTION = "bootloader"
@@ -6,21 +6,21 @@ PRIORITY = "optional"
PROVIDES = "virtual/bootloader"
LOCALVERSION = "+git${SRCDATE}+svnr${SRCREV}"
PV = "1.3.1${LOCALVERSION}"
-PR = "r3"
+PR = "r0"
SRCREV_FORMAT = "patches"
-UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 smdk2440 hxd8 qt2410 gta02v1 gta02v2 gta02v3 gta02v4"
+UBOOT_MACHINES = "gta01bv2 gta01bv3 gta01bv4 gta02v1 gta02v2 gta02v3 gta02v4"
DEFAULT_PREFERENCE = "-1"
SRC_URI = "\
- git://www.denx.de/git/u-boot.git/;protocol=git;name=upstream \
+ git://www.denx.de/git/u-boot.git/;protocol=git;name=upstream;tag=3afac79ec27b91df185f090b31dad9620779f440 \
svn://svn.openmoko.org/trunk/src/target/u-boot;module=patches;proto=http;name=patches \
file://uboot-eabi-fix-HACK.patch;patch=1;maxrev=3773 \
file://uboot-20070311-tools_makefile_ln_sf.patch;patch=1 \
file://makefile-no-dirafter.patch;patch=1 \
- file://boot-menu-gfx-fix-openmoko-bug-1140.patch;patch=1 \
+ file://boot-menu-gfx-fix-openmoko-bug-1140.patch;patch=1;maxrev=3775 \
"
S = "${WORKDIR}/git"
@@ -37,12 +37,6 @@ do_svnrev() {
echo "echo ${LOCALVERSION}" >>tools/setlocalversion
}
-do_configure_prepend() {
- find . -name "*.mk" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
- find . -name "Makefile" -exec sed -i 's,-mabi=apcs-gnu,,' {} \;
- cat ${WORKDIR}/uboot-eabi-fix-HACK.patch |patch -p1
-}
-
do_compile () {
chmod +x board/neo1973/gta*/split_by_variant.sh
for mach in ${UBOOT_MACHINES}
diff --git a/packages/uicmoc/files/.mtn2git_empty b/packages/uicmoc/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/uicmoc/files/.mtn2git_empty
diff --git a/packages/uicmoc/files/configure-fix.patch b/packages/uicmoc/files/configure-fix.patch
new file mode 100644
index 0000000000..df195494ee
--- /dev/null
+++ b/packages/uicmoc/files/configure-fix.patch
@@ -0,0 +1,13 @@
+Index: qtopia-core-opensource-src-4.3.3/configure
+===================================================================
+--- qtopia-core-opensource-src-4.3.3.orig/configure 2008-01-14 08:53:51.000000000 +0000
++++ qtopia-core-opensource-src-4.3.3/configure 2008-01-14 08:54:07.000000000 +0000
+@@ -447,7 +447,7 @@
+ # initalize variables
+ #-------------------------------------------------------------------------------
+
+-SYSTEM_VARIABLES="CC CXX CFLAGS CXXFLAGS LDFLAGS"
++SYSTEM_VARIABLES="CC CXX CFLAGS CXXFLAGS LDFLAGS LFLAGS"
+ for varname in $SYSTEM_VARIABLES; do
+ cmd=`echo \
+ 'if [ -n "\$'${varname}'" ]; then
diff --git a/packages/uicmoc/uicmoc4-native.inc b/packages/uicmoc/uicmoc4-native.inc
index 298c103fb1..5313b90ee9 100644
--- a/packages/uicmoc/uicmoc4-native.inc
+++ b/packages/uicmoc/uicmoc4-native.inc
@@ -6,7 +6,8 @@ PRIORITY = "optional"
LICENSE = "GPL"
PR = "r0"
-SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz"
+SRC_URI = "ftp://ftp.trolltech.com/qt/source/qtopia-core-opensource-src-${PV}.tar.gz \
+ file://configure-fix.patch;patch=1"
S = "${WORKDIR}/qtopia-core-opensource-src-${PV}"
inherit native
@@ -26,6 +27,8 @@ EXTRA_OECONF = "-prefix ${STAGING_DIR_NATIVE}/qt4 \
# yank default -e
EXTRA_OEMAKE = " "
+export LFLAGS="${LDFLAGS}"
+
do_configure() {
sed -i 's:^QT += xml qt3support$:QT += xml qt3support network:' "${S}"/src/tools/uic3/uic3.pro
echo yes | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
diff --git a/packages/vsftpd/vsftpd-charconv-2.0.5/.mtn2git_empty b/packages/vsftpd/vsftpd-charconv-2.0.5/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/vsftpd/vsftpd-charconv-2.0.5/.mtn2git_empty
diff --git a/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch b/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch
new file mode 100644
index 0000000000..affdd32075
--- /dev/null
+++ b/packages/vsftpd/vsftpd-charconv-2.0.5/vsftpd-charconv.patch
@@ -0,0 +1,4365 @@
+This patch is extracted and cleaned up version of filename character
+set conversion patches for vsftpd by Dmitriy Balashov,
+http://vsftpd.devnet.ru/eng/ . It provides dirty-pragmatics approach
+towards serving Windows codepages encoded filenames to Windows clients
+out of normal utf-8 filesystem.
+
+These patches will never be accepted upstream, they should never be merged
+to main vsftpd package, and they for sure void "vs" in "vsftpd". So again,
+they are for users to prefer stone-dead pragmatics. Use at you own risk.
+
+- Paul Sokolovsky, pmiscml@gmail.com
+
+diff -urN vsftpd-2.0.5.org/charconv.c vsftpd-2.0.5/charconv.c
+--- vsftpd-2.0.5.org/charconv.c 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/charconv.c 2008-01-13 20:39:49.000000000 +0200
+@@ -0,0 +1,462 @@
++/*
++ * Part of Very Secure FTPd
++ * Licence: GPL v2
++ * Author: Dmitriy Balashov
++ * charconv.c
++ */
++
++#include "charconv.h"
++#include "tunables.h"
++#include "session.h"
++#include "str.h"
++#include "sysutil.h"
++
++#include "char_maps/utf8.map"
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++#include "char_maps/cyrillic.map"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++#include "char_maps/western.map"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++#include "char_maps/central.map"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++#include "char_maps/soutern.map"
++#endif
++
++/* Tables mapping supported codepage names to runtime variables */
++static struct available_charsets
++{
++ const char* p_charset_name;
++ int p_variable;
++}
++available_charsets_array[] =
++{
++ { VSFTP_CP_NONE , VSFTP_C_NONE },
++ // Cyrillic
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++ { VSFTP_CP_UTF_8 , VSFTP_C_UTF8 },
++ { VSFTP_CP_UTF8 , VSFTP_C_UTF8 },
++ { VSFTP_CP_WIN_1251 , VSFTP_C_1251 },
++ { VSFTP_CP_WIN1251 , VSFTP_C_1251 },
++ { VSFTP_CP_CP1251 , VSFTP_C_1251 },
++ { VSFTP_CP_1251 , VSFTP_C_1251 },
++ { VSFTP_CP_KOI8_R , VSFTP_C_878R },
++ { VSFTP_CP_KOI8R , VSFTP_C_878R },
++ { VSFTP_CP_CP878 , VSFTP_C_878R },
++ { VSFTP_CP_878 , VSFTP_C_878R },
++ { VSFTP_CP_CP878R , VSFTP_C_878R },
++ { VSFTP_CP_878R , VSFTP_C_878R },
++ { VSFTP_CP_KOI8_U , VSFTP_C_878U },
++ { VSFTP_CP_KOI8U , VSFTP_C_878U },
++ { VSFTP_CP_CP878U , VSFTP_C_878U },
++ { VSFTP_CP_878U , VSFTP_C_878U },
++ { VSFTP_CP_IBM866 , VSFTP_C_866 },
++ { VSFTP_CP_CP866 , VSFTP_C_866 },
++ { VSFTP_CP_866 , VSFTP_C_866 },
++ { VSFTP_CP_ISO8859_5 , VSFTP_C_ISO5 },
++ { VSFTP_CP_ISO5 , VSFTP_C_ISO5 },
++#endif
++ // Western European
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++ { VSFTP_CP_ISO8859_1 , VSFTP_C_ISO1 },
++ { VSFTP_CP_ISO1 , VSFTP_C_ISO1 },
++ { VSFTP_CP_LATIN1 , VSFTP_C_ISO1 },
++ { VSFTP_CP_ISO8859_15, VSFTP_C_ISO15 },
++ { VSFTP_CP_ISO15 , VSFTP_C_ISO15 },
++ { VSFTP_CP_LATIN9 , VSFTP_C_ISO15 },
++ { VSFTP_CP_WIN_1252 , VSFTP_C_1252 },
++ { VSFTP_CP_WIN1252 , VSFTP_C_1252 },
++ { VSFTP_CP_CP1252 , VSFTP_C_1252 },
++ { VSFTP_CP_1252 , VSFTP_C_1252 },
++#endif
++ // Central European
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++ { VSFTP_CP_ISO8859_2 , VSFTP_C_ISO2 },
++ { VSFTP_CP_ISO2 , VSFTP_C_ISO2 },
++ { VSFTP_CP_LATIN2 , VSFTP_C_ISO2 },
++ { VSFTP_CP_ISO8859_16, VSFTP_C_ISO16 },
++ { VSFTP_CP_ISO16 , VSFTP_C_ISO16 },
++ { VSFTP_CP_WIN_1250 , VSFTP_C_1250 },
++ { VSFTP_CP_WIN1250 , VSFTP_C_1250 },
++ { VSFTP_CP_CP1250 , VSFTP_C_1250 },
++ { VSFTP_CP_1250 , VSFTP_C_1250 },
++#endif
++ // Soutern European
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++ { VSFTP_CP_ISO8859_3 , VSFTP_C_ISO3 },
++ { VSFTP_CP_ISO3 , VSFTP_C_ISO3 },
++ { VSFTP_CP_LATIN3 , VSFTP_C_ISO3 },
++#endif
++ { 0, 0 }
++};
++
++/* Available convertions */
++static struct available_convertions
++{
++ int local;
++ int remote;
++ int localCharset;
++ int remoteCharset;
++}
++available_convertions_array[] =
++{ // Cyrillic
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++ { VSFTP_C_UTF8 , VSFTP_C_1251 , VSFTP_CS_UTF8CYR , VSFTP_CS_1251 },
++ { VSFTP_C_UTF8 , VSFTP_C_878R , VSFTP_CS_UTF8CYR , VSFTP_CS_878R },
++ { VSFTP_C_UTF8 , VSFTP_C_878U , VSFTP_CS_UTF8CYR , VSFTP_CS_878U },
++ { VSFTP_C_UTF8 , VSFTP_C_866 , VSFTP_CS_UTF8CYR , VSFTP_CS_866 },
++ { VSFTP_C_UTF8 , VSFTP_C_ISO5 , VSFTP_CS_UTF8CYR , VSFTP_CS_ISO5 },
++ { VSFTP_C_1251 , VSFTP_C_UTF8 , VSFTP_CS_1251 , VSFTP_CS_UTF8CYR },
++ { VSFTP_C_1251 , VSFTP_C_878R , VSFTP_CS_1251 , VSFTP_CS_878R },
++ { VSFTP_C_1251 , VSFTP_C_878U , VSFTP_CS_1251 , VSFTP_CS_878U },
++ { VSFTP_C_1251 , VSFTP_C_866 , VSFTP_CS_1251 , VSFTP_CS_866 },
++ { VSFTP_C_1251 , VSFTP_C_ISO5 , VSFTP_CS_1251 , VSFTP_CS_ISO5 },
++ { VSFTP_C_878R , VSFTP_C_UTF8 , VSFTP_CS_878R , VSFTP_CS_UTF8CYR },
++ { VSFTP_C_878R , VSFTP_C_1251 , VSFTP_CS_878R , VSFTP_CS_1251 },
++ { VSFTP_C_878R , VSFTP_C_878U , VSFTP_CS_878R , VSFTP_CS_878U },
++ { VSFTP_C_878R , VSFTP_C_866 , VSFTP_CS_878R , VSFTP_CS_866 },
++ { VSFTP_C_878R , VSFTP_C_ISO5 , VSFTP_CS_878R , VSFTP_CS_ISO5 },
++ { VSFTP_C_866 , VSFTP_C_UTF8 , VSFTP_CS_866 , VSFTP_CS_UTF8CYR },
++ { VSFTP_C_866 , VSFTP_C_1251 , VSFTP_CS_866 , VSFTP_CS_1251 },
++ { VSFTP_C_866 , VSFTP_C_878R , VSFTP_CS_866 , VSFTP_CS_878R },
++ { VSFTP_C_866 , VSFTP_C_878U , VSFTP_CS_866 , VSFTP_CS_878U },
++ { VSFTP_C_866 , VSFTP_C_ISO5 , VSFTP_CS_866 , VSFTP_CS_ISO5 },
++ { VSFTP_C_ISO5 , VSFTP_C_UTF8 , VSFTP_CS_ISO5 , VSFTP_CS_UTF8CYR },
++ { VSFTP_C_ISO5 , VSFTP_C_1251 , VSFTP_CS_ISO5 , VSFTP_CS_1251 },
++ { VSFTP_C_ISO5 , VSFTP_C_878R , VSFTP_CS_ISO5 , VSFTP_CS_878R },
++ { VSFTP_C_ISO5 , VSFTP_C_878U , VSFTP_CS_ISO5 , VSFTP_CS_878U },
++ { VSFTP_C_ISO5 , VSFTP_C_866 , VSFTP_CS_ISO5 , VSFTP_CS_866 },
++#endif
++ // Western European
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++ { VSFTP_C_UTF8 , VSFTP_C_ISO1 , VSFTP_CS_UTF8WEST , VSFTP_CS_ISO1 },
++ { VSFTP_C_UTF8 , VSFTP_C_ISO15 , VSFTP_CS_UTF8WEST , VSFTP_CS_ISO15 },
++ { VSFTP_C_UTF8 , VSFTP_C_1252 , VSFTP_CS_UTF8WEST , VSFTP_CS_1252 },
++ { VSFTP_C_ISO1 , VSFTP_C_UTF8 , VSFTP_CS_ISO1 , VSFTP_CS_UTF8WEST },
++ { VSFTP_C_ISO1 , VSFTP_C_ISO15 , VSFTP_CS_ISO1 , VSFTP_CS_ISO15 },
++ { VSFTP_C_ISO1 , VSFTP_C_1252 , VSFTP_CS_ISO1 , VSFTP_CS_1252 },
++ { VSFTP_C_ISO15 , VSFTP_C_UTF8 , VSFTP_CS_ISO15 , VSFTP_CS_UTF8WEST },
++ { VSFTP_C_ISO15 , VSFTP_C_ISO1 , VSFTP_CS_ISO15 , VSFTP_CS_ISO1 },
++ { VSFTP_C_ISO15 , VSFTP_C_1252 , VSFTP_CS_ISO15 , VSFTP_CS_1252 },
++ { VSFTP_C_1252 , VSFTP_C_UTF8 , VSFTP_CS_1252 , VSFTP_CS_UTF8WEST },
++ { VSFTP_C_1252 , VSFTP_C_ISO1 , VSFTP_CS_1252 , VSFTP_CS_ISO1 },
++ { VSFTP_C_1252 , VSFTP_C_ISO15 , VSFTP_CS_1252 , VSFTP_CS_ISO15 },
++#endif
++ // Central European
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++ { VSFTP_C_UTF8 , VSFTP_C_ISO2 , VSFTP_CS_UTF8CENT , VSFTP_CS_ISO2 },
++ { VSFTP_C_UTF8 , VSFTP_C_ISO16 , VSFTP_CS_UTF8CENT , VSFTP_CS_ISO16 },
++ { VSFTP_C_UTF8 , VSFTP_C_1250 , VSFTP_CS_UTF8CENT , VSFTP_CS_1250 },
++ { VSFTP_C_ISO2 , VSFTP_C_UTF8 , VSFTP_CS_ISO2 , VSFTP_CS_UTF8CENT },
++ { VSFTP_C_ISO2 , VSFTP_C_ISO16 , VSFTP_CS_ISO2 , VSFTP_CS_ISO16 },
++ { VSFTP_C_ISO2 , VSFTP_C_1250 , VSFTP_CS_ISO2 , VSFTP_CS_1250 },
++ { VSFTP_C_ISO16 , VSFTP_C_UTF8 , VSFTP_CS_ISO16 , VSFTP_CS_UTF8CENT },
++ { VSFTP_C_ISO16 , VSFTP_C_ISO2 , VSFTP_CS_ISO16 , VSFTP_CS_ISO2 },
++ { VSFTP_C_ISO16 , VSFTP_C_1250 , VSFTP_CS_ISO16 , VSFTP_CS_1250 },
++ { VSFTP_C_1250 , VSFTP_C_UTF8 , VSFTP_CS_1250 , VSFTP_CS_UTF8CENT },
++ { VSFTP_C_1250 , VSFTP_C_ISO2 , VSFTP_CS_1250 , VSFTP_CS_ISO2 },
++ { VSFTP_C_1250 , VSFTP_C_ISO16 , VSFTP_CS_1250 , VSFTP_CS_ISO16 },
++#endif
++ // Soutern European
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++ { VSFTP_C_UTF8 , VSFTP_C_ISO3 , VSFTP_CS_UTF8SOUT , VSFTP_CS_ISO3 },
++ { VSFTP_C_ISO3 , VSFTP_C_UTF8 , VSFTP_CS_ISO3 , VSFTP_CS_UTF8SOUT },
++#endif
++
++ { 0, 0, 0, 0 }
++};
++
++map_ptr map_array[] =
++{
++ 0,
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++ codepage_utf8cyr_array, codepage_win1251_array, codepage_koi8r_array,
++ codepage_ibm866_array, codepage_iso5_array, codepage_koi8u_array,
++#else
++ 0, 0, 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++ codepage_utf8west_array, codepage_iso1_array, codepage_iso15_array,
++ codepage_win1252_array,
++#else
++ 0, 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++ codepage_utf8cent_array, codepage_iso2_array, codepage_iso16_array,
++ codepage_win1250_array,
++#else
++ 0, 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++ codepage_utf8sout_array, codepage_iso3_array,
++#else
++ 0, 0,
++#endif
++
++ 0
++};
++
++/* Initial table for work with unprintable chars */
++map_ptr init_array[] =
++{
++ 0,
++ codepage_utf8_array,
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++ codepage_win1251_array, codepage_koi8r_array, codepage_ibm866_array,
++ codepage_iso5_array, codepage_koi8u_array,
++#else
++ 0, 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++ codepage_iso1_array, codepage_iso15_array, codepage_win1252_array,
++#else
++ 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++ codepage_iso2_array, codepage_iso16_array, codepage_win1250_array,
++#else
++ 0, 0, 0,
++#endif
++
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++ codepage_iso3_array,
++#else
++ 0,
++#endif
++
++ 0
++};
++
++map_ptr localMap = 0, remoteMap = 0;
++map_ptr localTbl = 0, remoteTbl = 0;
++
++void char_convertion(struct mystr* p_str, int direction, char unprintable);
++void InitTables(map_ptr* map, map_ptr* table, int indexx);
++static int char_len(unsigned int s);
++static unsigned int bsearch_index(map_ptr map, unsigned int low, unsigned int high, unsigned int char_code);
++
++const char* vsf_charconv_charset_name(int code)
++{
++ int i = 0;
++ while (available_charsets_array [i].p_charset_name && available_charsets_array [i].p_variable != code) i++;
++ return available_charsets_array [i].p_charset_name;
++}
++
++int vsf_charconv_codepage(const char* p_str)
++{
++ const struct available_charsets* charsets = available_charsets_array;
++
++ while (charsets->p_charset_name != 0)
++ {
++ if (!vsf_sysutil_strcmp(charsets->p_charset_name, p_str))
++ {
++ return charsets->p_variable;
++ }
++ charsets++;
++ }
++
++ return 0;
++}
++
++int vsf_charconv_avail_convertion(int localCode, int remoteCode)
++{
++ const struct available_convertions* aconv = available_convertions_array;
++
++ while (aconv->local != 0)
++ {
++ if (localCode == aconv->local && remoteCode == aconv->remote)
++ {
++ InitTables(&localMap, &localTbl, aconv->localCharset);
++ InitTables(&remoteMap, &remoteTbl, aconv->remoteCharset);
++ return 1;
++ }
++ aconv++;
++ }
++
++ return 0;
++}
++
++void vsf_charconv_init_local_codepage(int localCode)
++{
++ if (!localCode)
++ {
++ return;
++ }
++
++ localTbl = init_array [localCode];
++ localMap = vsf_sysutil_malloc((localTbl [0].order + 1) * sizeof(_codepage_map));
++ localMap [0].char_code = localTbl [0].char_code;
++ localMap [0].order = localTbl [0].order;
++
++ int indexx = 1;
++ while (localTbl [indexx].char_code)
++ {
++ if (localTbl [indexx].order)
++ {
++ localMap [localTbl [indexx].order].char_code = localTbl [indexx].char_code;
++ localMap [localTbl [indexx].order].order = indexx;
++ }
++ indexx++;
++ }
++
++ return;
++}
++
++void vsf_charconv_convert(struct vsf_session* p_sess, struct mystr* p_str, int direction)
++{
++ if (!p_sess->enable_conversion || !p_sess->remote_charset || !tunable_local_codepage) return;
++
++ char_convertion(p_str, direction, '?');
++}
++
++void vsf_charconv_replace_unprintable(struct mystr* p_str, char new_char)
++{
++ if (localMap) char_convertion(p_str, VSFTP_CONVDIRECT_UNPRINTABLE, new_char);
++}
++
++void InitTables(map_ptr* map, map_ptr* table, int indexx)
++{
++ *table = map_array [indexx];
++
++ if (*map) vsf_sysutil_free(*map);
++
++ *map = vsf_sysutil_malloc(((*table) [0].order + 1) * sizeof(_codepage_map));
++ (*map) [0].char_code = (*table) [0].char_code;
++ (*map) [0].order = (*table) [0].order;
++
++ indexx = 1;
++ while ((*table) [indexx].char_code)
++ {
++ if ((*table) [indexx].order)
++ {
++ (*map) [(*table) [indexx].order].char_code = (*table) [indexx].char_code;
++ (*map) [(*table) [indexx].order].order = indexx;
++ }
++ indexx++;
++ }
++
++ return;
++}
++
++static int char_len(unsigned int s)
++{
++ int len = 1;
++ if ((s & 0x80) == 0x00) len = 1;
++ else if ((s & 0xe0) == 0xc0) len = 2;
++ else if ((s & 0xf0) == 0xe0) len = 3;
++ else if ((s & 0xf8) == 0xf0) len = 4;
++// else if ((s & 0xfc) == 0xf8) len = 5;
++// else if ((s & 0xfe) == 0xce) len = 6;
++ return (len);
++}
++
++static unsigned int bsearch_index(map_ptr map, unsigned int low, unsigned int high, unsigned int char_code)
++{
++ unsigned int m, l = low, r = high;
++
++ m = (l + r) >> 1;
++ while ((m != 0) && (map [m].char_code != char_code))
++ {
++ if (map [m].char_code < char_code) l = m + 1;
++ else
++ if (map [m].char_code > char_code) r = m - 1;
++ if (l > r)
++ return 0;
++ else
++ m = (l + r) >> 1;
++ }
++
++ if (m) m = map [m].order;
++ return m;
++}
++
++void char_convertion(struct mystr* p_str, int direction, char unprintable)
++{
++ const char* srcbuf;
++ unsigned int srclen;
++ char* dstbuf;
++ map_ptr src, dst;
++ unsigned int sl;
++ unsigned int srcpos = 0, dstpos = 0;
++ unsigned int char_code = 0;
++
++ srclen = str_getlen(p_str); // Len of source string
++ srcbuf = str_getbuf(p_str);
++
++ if (direction == VSFTP_CONVDIRECT_FORWARD)
++ {
++ src = localMap;
++ dst = remoteTbl;
++ }
++ else
++ if (direction == VSFTP_CONVDIRECT_BACKWARD)
++ {
++ src = remoteMap;
++ dst = localTbl;
++ }
++ else
++ {
++ src = localMap;
++ dst = localTbl;
++ }
++
++ if (!src || !dst)
++ {
++ return;
++ }
++
++ dstbuf = vsf_sysutil_malloc(srclen * dst [0].char_code + dst [0].char_code);
++
++ while (srcpos < srclen)
++ {
++ char_code = (unsigned char)srcbuf [srcpos++];
++ if (src [0].char_code > 1)
++ {
++ sl = char_len (char_code);
++ while (sl-- > 1)
++ {
++ char_code = (char_code << 8) | (unsigned char)srcbuf [srcpos++];
++ }
++ }
++
++ if (char_code > 127)
++ {
++ sl = bsearch_index (src, 1, src [0].order, char_code);
++ char_code = 0;
++ if (sl) char_code = dst [sl].char_code;
++ }
++
++ if (char_code == 13 || char_code == 10)
++ {
++ char_code = 0;
++ }
++ else
++ if (char_code < 32 && char_code != 9)
++ {
++ char_code = (unsigned int)unprintable;
++ }
++
++ if (char_code > 0 || direction != VSFTP_CONVDIRECT_UNPRINTABLE)
++ {
++ if (char_code & 0xff000000) dstbuf [dstpos++] = (char)((char_code >> 24) & 0xff);
++ if (char_code & 0x00ff0000) dstbuf [dstpos++] = (char)((char_code >> 16) & 0xff);
++ if (char_code & 0x0000ff00) dstbuf [dstpos++] = (char)((char_code >> 8) & 0xff);
++ if (char_code & 0x000000ff) dstbuf [dstpos++] = (char)((char_code ) & 0xff);
++ }
++ }
++
++ dstbuf [dstpos] = '\0';
++
++ str_empty(p_str);
++ str_append_text(p_str, dstbuf);
++
++ vsf_sysutil_free(dstbuf);
++}
++
+diff -urN vsftpd-2.0.5.org/charconv.h vsftpd-2.0.5/charconv.h
+--- vsftpd-2.0.5.org/charconv.h 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/charconv.h 2008-01-13 19:32:11.000000000 +0200
+@@ -0,0 +1,182 @@
++#ifndef VSF_CHARCONV_H
++#define VSF_CHARCONV_H
++
++struct mystr;
++struct vsf_session;
++
++#define VSFTP_CHARCONV_SUPPORT_CYRILLIC
++#define VSFTP_CHARCONV_SUPPORT_WESTERN
++#define VSFTP_CHARCONV_SUPPORT_CENTRAL
++#define VSFTP_CHARCONV_SUPPORT_SOUTERN
++
++#define VSFTP_CONVDIRECT_FORWARD 1
++#define VSFTP_CONVDIRECT_UNPRINTABLE 0
++#define VSFTP_CONVDIRECT_BACKWARD -1
++
++/* Supported charset for convertion */
++#define VSFTP_CP_NONE "NONE"
++#define VSFTP_CP_UTF_8 "UTF-8"
++#define VSFTP_CP_UTF8 "UTF8"
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++#define VSFTP_CP_WIN_1251 "Win-1251"
++#define VSFTP_CP_WIN1251 "WIN1251"
++#define VSFTP_CP_CP1251 "CP1251"
++#define VSFTP_CP_1251 "1251"
++#define VSFTP_CP_KOI8_R "Koi8-R"
++#define VSFTP_CP_KOI8R "KOI8R"
++#define VSFTP_CP_KOI8_U "Koi8-U"
++#define VSFTP_CP_KOI8U "KOI8U"
++#define VSFTP_CP_CP878 "CP878"
++#define VSFTP_CP_878 "878"
++#define VSFTP_CP_CP878R "CP878R"
++#define VSFTP_CP_878R "878R"
++#define VSFTP_CP_CP878U "CP878U"
++#define VSFTP_CP_878U "878U"
++#define VSFTP_CP_IBM866 "IBM866"
++#define VSFTP_CP_CP866 "CP866"
++#define VSFTP_CP_866 "866"
++#define VSFTP_CP_ISO8859_5 "ISO-8859-5"
++#define VSFTP_CP_ISO5 "ISO5"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++#define VSFTP_CP_ISO8859_1 "ISO-8859-1"
++#define VSFTP_CP_ISO1 "ISO1"
++#define VSFTP_CP_LATIN1 "LATIN1"
++#define VSFTP_CP_ISO8859_15 "ISO-8859-15"
++#define VSFTP_CP_ISO15 "ISO15"
++#define VSFTP_CP_LATIN9 "LATIN9"
++#define VSFTP_CP_WIN_1252 "Win-1252"
++#define VSFTP_CP_WIN1252 "WIN1252"
++#define VSFTP_CP_CP1252 "CP1252"
++#define VSFTP_CP_1252 "1252"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++#define VSFTP_CP_ISO8859_2 "ISO-8859-2"
++#define VSFTP_CP_ISO2 "ISO2"
++#define VSFTP_CP_LATIN2 "LATIN2"
++#define VSFTP_CP_ISO8859_16 "ISO-8859-16"
++#define VSFTP_CP_ISO16 "ISO16"
++#define VSFTP_CP_WIN_1250 "Win-1250"
++#define VSFTP_CP_WIN1250 "WIN1250"
++#define VSFTP_CP_CP1250 "CP1250"
++#define VSFTP_CP_1250 "1250"
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++#define VSFTP_CP_ISO8859_3 "ISO-8859-3"
++#define VSFTP_CP_ISO3 "ISO3"
++#define VSFTP_CP_LATIN3 "LATIN3"
++#endif
++
++#define VSFTP_C_NONE 0
++#define VSFTP_C_UTF8 1
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++#define VSFTP_C_1251 2
++#define VSFTP_C_878R 3
++#define VSFTP_C_866 4
++#define VSFTP_C_ISO5 5
++#define VSFTP_C_878U 6
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++#define VSFTP_C_ISO1 7
++#define VSFTP_C_ISO15 8
++#define VSFTP_C_1252 9
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++#define VSFTP_C_ISO2 10
++#define VSFTP_C_ISO16 11
++#define VSFTP_C_1250 12
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++#define VSFTP_C_ISO3 13
++#endif
++
++#define VSFTP_CS_NONE 0
++#ifdef VSFTP_CHARCONV_SUPPORT_CYRILLIC
++#define VSFTP_CS_UTF8CYR 1
++#define VSFTP_CS_1251 2
++#define VSFTP_CS_878R 3
++#define VSFTP_CS_866 4
++#define VSFTP_CS_ISO5 5
++#define VSFTP_CS_878U 6
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_WESTERN
++#define VSFTP_CS_UTF8WEST 7
++#define VSFTP_CS_ISO1 8
++#define VSFTP_CS_ISO15 9
++#define VSFTP_CS_1252 10
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_CENTRAL
++#define VSFTP_CS_UTF8CENT 11
++#define VSFTP_CS_ISO2 12
++#define VSFTP_CS_ISO16 13
++#define VSFTP_CS_1250 14
++#endif
++#ifdef VSFTP_CHARCONV_SUPPORT_SOUTERN
++#define VSFTP_CS_UTF8SOUT 15
++#define VSFTP_CS_ISO3 16
++#endif
++
++struct codepage_map
++{
++ unsigned int char_code; // The first element is count bytes of char.
++ unsigned int order;
++} _codepage_map;
++
++typedef struct codepage_map * map_ptr;
++
++extern map_ptr localMap;
++
++/* vsf_charconv_charset_name()
++ * PURPOSE
++ * Get charset name by code;
++ * PARAMETERS
++ * code - Internal charset code
++ * RETURNS
++ * Charset name
++ */
++const char* vsf_charconv_charset_name(int code);
++
++/* vsf_charconv_codepage()
++ * PURPOSE
++ * Get internal charset code
++ * PARAMETERS
++ * p_str - String value with code page
++ * RETURNS
++ * Internal charset code
++ */
++int vsf_charconv_codepage(const char* p_str);
++
++/* vsf_charconv_init_local_codepage(int localCode)
++ * PURPOSE
++ * Init local codepage for work with unprintable chars
++ * PARAMETERS
++ * localCode - source internal code page
++ */
++void vsf_charconv_init_local_codepage(int localCode);
++
++/* vsf_charconv_avail_convertion()
++ * PURPOS
++ * Checking for available convertion characters
++ * PARAMETERS
++ * localCode - source internal code page
++ * remoteCode - destination internal code page
++ * RETURNS
++ * Available ot not converion
++ */
++int vsf_charconv_avail_convertion(int localCode, int remoteCode);
++
++/* vsf_charconv_convert()
++ * PURPOSE
++ * Converting string via charsets
++ * PARAMETERS
++ * p_sess - the current session object
++ * p_str - string for convertin
++ * direction - converting from host to remoute charsetr or otherwise
++ */
++void vsf_charconv_convert(struct vsf_session* p_sess, struct mystr* p_str, int direction);
++
++/* vsf_charconv_replace_unprintable
++ */
++void vsf_charconv_replace_unprintable(struct mystr* p_str, char new_char);
++
++#endif
+diff -urN vsftpd-2.0.5.org/char_maps/central.map vsftpd-2.0.5/char_maps/central.map
+--- vsftpd-2.0.5.org/char_maps/central.map 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/char_maps/central.map 2008-01-13 20:09:59.000000000 +0200
+@@ -0,0 +1,738 @@
++/*
++ !!! WARNING !!!
++ DON'T CHANGE ORDER OF CHARS
++*/
++
++struct codepage_map codepage_utf8cent_array[] =
++ {
++ { 0x000003, 178 }, // max size , char count
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00c280, 1 },
++ { 0x00c281, 2 },
++ { 0x00c282, 3 },
++ { 0x00c283, 4 },
++ { 0x00c284, 5 },
++ { 0x00c285, 6 },
++ { 0x00c286, 7 },
++ { 0x00c287, 8 },
++ { 0x00c288, 9 },
++ { 0x00c289, 10 },
++ { 0x00c28a, 11 },
++ { 0x00c28b, 12 },
++ { 0x00c28c, 13 },
++ { 0x00c28d, 14 },
++ { 0x00c28e, 15 },
++ { 0x00c28f, 16 },
++ { 0x00c290, 17 },
++ { 0x00c291, 18 },
++ { 0x00c292, 19 },
++ { 0x00c293, 20 },
++ { 0x00c294, 21 },
++ { 0x00c295, 22 },
++ { 0x00c296, 23 },
++ { 0x00c297, 24 },
++ { 0x00c298, 25 },
++ { 0x00c299, 26 },
++ { 0x00c29a, 27 },
++ { 0x00c29b, 28 },
++ { 0x00c29c, 29 },
++ { 0x00c29d, 30 },
++ { 0x00c29e, 31 },
++ { 0x00c29f, 32 },
++ { 0x00c2a0, 33 },
++ { 0x00c2a4, 34 },
++ { 0x00c2a6, 35 },
++ { 0x00c2a7, 36 },
++ { 0x00c2a8, 37 },
++ { 0x00c2a9, 38 },
++ { 0x00c2ab, 39 },
++ { 0x00c2ad, 40 },
++ { 0x00c2ad, 41 },
++ { 0x00c2ae, 42 },
++ { 0x00c2b0, 43 },
++ { 0x00c2b1, 44 },
++ { 0x00c2b4, 45 },
++ { 0x00c2b5, 46 },
++ { 0x00c2b6, 47 },
++ { 0x00c2b7, 48 },
++ { 0x00c2b8, 49 },
++ { 0x00c2bb, 50 },
++ { 0x00c380, 51 },
++ { 0x00c381, 52 },
++ { 0x00c382, 53 },
++ { 0x00c384, 54 },
++ { 0x00c386, 55 },
++ { 0x00c387, 56 },
++ { 0x00c388, 57 },
++ { 0x00c389, 58 },
++ { 0x00c38a, 59 },
++ { 0x00c38b, 60 },
++ { 0x00c38c, 61 },
++ { 0x00c38d, 62 },
++ { 0x00c38e, 63 },
++ { 0x00c38f, 64 },
++ { 0x00c392, 65 },
++ { 0x00c393, 66 },
++ { 0x00c394, 67 },
++ { 0x00c396, 68 },
++ { 0x00c397, 69 },
++ { 0x00c399, 70 },
++ { 0x00c39a, 71 },
++ { 0x00c39b, 72 },
++ { 0x00c39c, 73 },
++ { 0x00c39d, 74 },
++ { 0x00c39f, 75 },
++ { 0x00c3a0, 76 },
++ { 0x00c3a1, 77 },
++ { 0x00c3a2, 78 },
++ { 0x00c3a4, 79 },
++ { 0x00c3a6, 80 },
++ { 0x00c3a7, 81 },
++ { 0x00c3a8, 82 },
++ { 0x00c3a9, 83 },
++ { 0x00c3aa, 84 },
++ { 0x00c3ab, 85 },
++ { 0x00c3ac, 86 },
++ { 0x00c3ad, 87 },
++ { 0x00c3ae, 88 },
++ { 0x00c3af, 89 },
++ { 0x00c3b2, 90 },
++ { 0x00c3b3, 91 },
++ { 0x00c3b4, 92 },
++ { 0x00c3b6, 93 },
++ { 0x00c3b7, 94 },
++ { 0x00c3b9, 95 },
++ { 0x00c3ba, 96 },
++ { 0x00c3bb, 97 },
++ { 0x00c3bc, 98 },
++ { 0x00c3bd, 99 },
++ { 0x00c3bf, 100 },
++ { 0x00c482, 101 },
++ { 0x00c483, 102 },
++ { 0x00c484, 103 },
++ { 0x00c485, 104 },
++ { 0x00c486, 105 },
++ { 0x00c487, 106 },
++ { 0x00c48c, 107 },
++ { 0x00c48d, 108 },
++ { 0x00c48e, 109 },
++ { 0x00c48f, 110 },
++ { 0x00c490, 111 },
++ { 0x00c491, 112 },
++ { 0x00c498, 113 },
++ { 0x00c499, 114 },
++ { 0x00c49a, 115 },
++ { 0x00c49b, 116 },
++ { 0x00c4b9, 117 },
++ { 0x00c4ba, 118 },
++ { 0x00c4bd, 119 },
++ { 0x00c4be, 120 },
++ { 0x00c581, 121 },
++ { 0x00c582, 122 },
++ { 0x00c583, 123 },
++ { 0x00c584, 124 },
++ { 0x00c587, 125 },
++ { 0x00c588, 126 },
++ { 0x00c590, 127 },
++ { 0x00c591, 128 },
++ { 0x00c592, 129 },
++ { 0x00c593, 130 },
++ { 0x00c594, 131 },
++ { 0x00c595, 132 },
++ { 0x00c598, 133 },
++ { 0x00c599, 134 },
++ { 0x00c59a, 135 },
++ { 0x00c59b, 136 },
++ { 0x00c59e, 137 },
++ { 0x00c59f, 138 },
++ { 0x00c5a0, 139 },
++ { 0x00c5a1, 140 },
++ { 0x00c5a2, 141 },
++ { 0x00c5a3, 142 },
++ { 0x00c5a4, 143 },
++ { 0x00c5a5, 144 },
++ { 0x00c5ae, 145 },
++ { 0x00c5af, 146 },
++ { 0x00c5b0, 147 },
++ { 0x00c5b1, 148 },
++ { 0x00c5b8, 149 },
++ { 0x00c5b9, 150 },
++ { 0x00c5ba, 151 },
++ { 0x00c5bb, 152 },
++ { 0x00c5bc, 153 },
++ { 0x00c5bd, 154 },
++ { 0x00c5be, 155 },
++ { 0x00cb87, 156 },
++ { 0x00cb98, 157 },
++ { 0x00cb99, 158 },
++ { 0x00c89a, 159 },
++ { 0x00cb9b, 160 },
++ { 0x00cb9d, 161 },
++ { 0xe28093, 162 },
++ { 0xe28094, 163 },
++ { 0xe28098, 164 },
++ { 0xe28099, 165 },
++ { 0xe2809a, 166 },
++ { 0xe2809c, 167 },
++ { 0xe2809d, 168 },
++ { 0xe2809e, 169 },
++ { 0xe280a0, 170 },
++ { 0xe280a1, 171 },
++ { 0xe280a2, 172 },
++ { 0xe280a6, 173 },
++ { 0xe280b0, 174 },
++ { 0xe280b9, 175 },
++ { 0xe280ba, 176 },
++ { 0xe282ac, 177 },
++ { 0xe284a2, 178 },
++ { 0x000000, 0 }
++ };
++
++struct codepage_map codepage_iso2_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b3, 52 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x0000, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_iso16_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a7, 40 },
++ { 0x003f, 0 },
++ { 0x00a9, 42 },
++ { 0x00ab, 44 },
++ { 0x00ad, 46 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x003f, 0 },
++ { 0x00bb, 60 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c4, 69 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d6, 87 },
++ { 0x003f, 0 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x003f, 0 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e4, 101 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f6, 119 },
++ { 0x003f, 0 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x003f, 0 },
++ { 0x00ff, 128 },
++ { 0x00c3, 68 },
++ { 0x00e3, 100 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00c5, 70 },
++ { 0x00e5, 102 },
++ { 0x00b2, 51 },
++ { 0x00b9, 58 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00d0, 81 },
++ { 0x00f0, 113 },
++ { 0x00dd, 94 },
++ { 0x00fd, 126 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a3, 36 },
++ { 0x00b3, 52 },
++ { 0x00d1, 82 },
++ { 0x00f1, 114 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00d5, 86 },
++ { 0x00f5, 118 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00d7, 88 },
++ { 0x00f7, 120 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a6, 39 },
++ { 0x00a8, 41 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00d8, 89 },
++ { 0x00f8, 121 },
++ { 0x00be, 63 },
++ { 0x00ac, 45 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00bf, 64 },
++ { 0x00b4, 53 },
++ { 0x00b8, 57 },
++ { 0x003f, 0 },
++ { 0x00aa, 43 },
++ { 0x00ba, 59 },
++ { 0x00de, 95 },
++ { 0x00fe, 127 },
++ { 0x00b5, 54 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a5, 38 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a4, 37 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_win1250_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x0081, 2 },
++ { 0x0083, 4 },
++ { 0x0088, 9 },
++ { 0x0090, 17 },
++ { 0x0098, 25 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a0, 33 },
++ { 0x00a4, 37 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00bb, 60 },
++ { 0x003f, 0 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c4, 69 },
++ { 0x003f, 0 },
++ { 0x00c7, 72 },
++ { 0x003f, 0 },
++ { 0x00c9, 74 },
++ { 0x003f, 0 },
++ { 0x00cb, 76 },
++ { 0x003f, 0 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x003f, 0 },
++ { 0x00da, 91 },
++ { 0x003f, 0 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00df, 96 },
++ { 0x003f, 0 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e4, 101 },
++ { 0x003f, 0 },
++ { 0x00e7, 104 },
++ { 0x003f, 0 },
++ { 0x00e9, 106 },
++ { 0x003f, 0 },
++ { 0x00eb, 108 },
++ { 0x003f, 0 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x003f, 0 },
++ { 0x00fa, 123 },
++ { 0x003f, 0 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x003f, 0 },
++ { 0x00c3, 68 },
++ { 0x00e3, 100 },
++ { 0x00a5, 38 },
++ { 0x00b9, 58 },
++ { 0x00c6, 71 },
++ { 0x00e6, 103 },
++ { 0x00c8, 73 },
++ { 0x00e8, 105 },
++ { 0x00cf, 80 },
++ { 0x00ef, 112 },
++ { 0x00d0, 81 },
++ { 0x00f0, 113 },
++ { 0x00ca, 75 },
++ { 0x00ea, 107 },
++ { 0x00cc, 77 },
++ { 0x00ec, 109 },
++ { 0x00c5, 70 },
++ { 0x00e5, 102 },
++ { 0x00bc, 61 },
++ { 0x00be, 63 },
++ { 0x00a3, 36 },
++ { 0x00b3, 52 },
++ { 0x00d1, 82 },
++ { 0x00f1, 114 },
++ { 0x00d2, 83 },
++ { 0x00f2, 115 },
++ { 0x00d5, 86 },
++ { 0x00f5, 118 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00c0, 65 },
++ { 0x00e0, 97 },
++ { 0x00d8, 89 },
++ { 0x00f8, 121 },
++ { 0x008c, 13 },
++ { 0x009c, 29 },
++ { 0x00aa, 43 },
++ { 0x00ba, 59 },
++ { 0x008a, 11 },
++ { 0x009a, 27 },
++ { 0x00de, 95 },
++ { 0x00fe, 127 },
++ { 0x008d, 14 },
++ { 0x009d, 30 },
++ { 0x00d9, 90 },
++ { 0x00f9, 122 },
++ { 0x00db, 92 },
++ { 0x00fb, 124 },
++ { 0x003f, 0 },
++ { 0x008f, 16 },
++ { 0x009f, 32 },
++ { 0x00af, 48 },
++ { 0x00bf, 64 },
++ { 0x008e, 15 },
++ { 0x009e, 31 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00ff, 128 },
++ { 0x003f, 0 },
++ { 0x00b2, 51 },
++ { 0x00bd, 62 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0082, 3 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0084, 5 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0095, 22 },
++ { 0x0085, 6 },
++ { 0x0089, 10 },
++ { 0x008b, 12 },
++ { 0x009b, 28 },
++ { 0x0080, 1 },
++ { 0x0099, 26 },
++ { 0x0000, 0 }
++ };
++
+diff -urN vsftpd-2.0.5.org/char_maps/cyrillic.map vsftpd-2.0.5/char_maps/cyrillic.map
+--- vsftpd-2.0.5.org/char_maps/cyrillic.map 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/char_maps/cyrillic.map 2008-01-13 20:09:59.000000000 +0200
+@@ -0,0 +1,1349 @@
++/*
++ !!! WARNING !!!
++ DON'T CHANGE ORDER OF CHARS
++*/
++
++struct codepage_map codepage_utf8cyr_array[] =
++ {
++ { 0x000003, 216 }, // max size , char count
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00c280, 1 },
++ { 0x00c281, 2 },
++ { 0x00c282, 3 },
++ { 0x00c283, 4 },
++ { 0x00c284, 5 },
++ { 0x00c285, 6 },
++ { 0x00c286, 7 },
++ { 0x00c287, 8 },
++ { 0x00c288, 9 },
++ { 0x00c289, 10 },
++ { 0x00c28a, 11 },
++ { 0x00c28b, 12 },
++ { 0x00c28c, 13 },
++ { 0x00c28d, 14 },
++ { 0x00c28e, 15 },
++ { 0x00c28f, 16 },
++ { 0x00c290, 17 },
++ { 0x00c291, 18 },
++ { 0x00c292, 19 },
++ { 0x00c293, 20 },
++ { 0x00c294, 21 },
++ { 0x00c295, 22 },
++ { 0x00c296, 23 },
++ { 0x00c297, 24 },
++ { 0x00c298, 25 },
++ { 0x00c299, 26 },
++ { 0x00c29a, 27 },
++ { 0x00c29b, 28 },
++ { 0x00c29c, 29 },
++ { 0x00c29d, 30 },
++ { 0x00c29e, 31 },
++ { 0x00c29f, 32 },
++ { 0x00c2a0, 33 },
++ { 0x00c2a4, 34 },
++ { 0x00c2a6, 35 },
++ { 0x00c2a7, 36 },
++ { 0x00c2a9, 37 },
++ { 0x00c2ab, 38 },
++ { 0x00c2ac, 39 },
++ { 0x00c2ad, 40 },
++ { 0x00c2ae, 41 },
++ { 0x00c2b0, 42 },
++ { 0x00c2b1, 43 },
++ { 0x00c2b2, 44 },
++ { 0x00c2b5, 45 },
++ { 0x00c2b6, 46 },
++ { 0x00c2b7, 47 },
++ { 0x00c2bb, 48 },
++ { 0x00c3b7, 49 },
++ { 0x00d081, 50 },
++ { 0x00d082, 51 },
++ { 0x00d083, 52 },
++ { 0x00d084, 53 },
++ { 0x00d085, 54 },
++ { 0x00d086, 55 },
++ { 0x00d087, 56 },
++ { 0x00d088, 57 },
++ { 0x00d089, 58 },
++ { 0x00d08a, 59 },
++ { 0x00d08b, 60 },
++ { 0x00d08c, 61 },
++ { 0x00d08e, 62 },
++ { 0x00d08f, 63 },
++ { 0x00d090, 64 },
++ { 0x00d091, 65 },
++ { 0x00d092, 66 },
++ { 0x00d093, 67 },
++ { 0x00d094, 68 },
++ { 0x00d095, 69 },
++ { 0x00d096, 70 },
++ { 0x00d097, 71 },
++ { 0x00d098, 72 },
++ { 0x00d099, 73 },
++ { 0x00d09a, 74 },
++ { 0x00d09b, 75 },
++ { 0x00d09c, 76 },
++ { 0x00d09d, 77 },
++ { 0x00d09e, 78 },
++ { 0x00d09f, 79 },
++ { 0x00d0a0, 80 },
++ { 0x00d0a1, 81 },
++ { 0x00d0a2, 82 },
++ { 0x00d0a3, 83 },
++ { 0x00d0a4, 84 },
++ { 0x00d0a5, 85 },
++ { 0x00d0a6, 86 },
++ { 0x00d0a7, 87 },
++ { 0x00d0a8, 88 },
++ { 0x00d0a9, 89 },
++ { 0x00d0aa, 90 },
++ { 0x00d0ab, 91 },
++ { 0x00d0ac, 92 },
++ { 0x00d0ad, 93 },
++ { 0x00d0ae, 94 },
++ { 0x00d0af, 95 },
++ { 0x00d0b0, 96 },
++ { 0x00d0b1, 97 },
++ { 0x00d0b2, 98 },
++ { 0x00d0b3, 99 },
++ { 0x00d0b4, 100 },
++ { 0x00d0b5, 101 },
++ { 0x00d0b6, 102 },
++ { 0x00d0b7, 103 },
++ { 0x00d0b8, 104 },
++ { 0x00d0b9, 105 },
++ { 0x00d0ba, 106 },
++ { 0x00d0bb, 107 },
++ { 0x00d0bc, 108 },
++ { 0x00d0bd, 109 },
++ { 0x00d0be, 110 },
++ { 0x00d0bf, 111 },
++ { 0x00d180, 112 },
++ { 0x00d181, 113 },
++ { 0x00d182, 114 },
++ { 0x00d183, 115 },
++ { 0x00d184, 116 },
++ { 0x00d185, 117 },
++ { 0x00d186, 118 },
++ { 0x00d187, 119 },
++ { 0x00d188, 120 },
++ { 0x00d189, 121 },
++ { 0x00d18a, 122 },
++ { 0x00d18b, 123 },
++ { 0x00d18c, 124 },
++ { 0x00d18d, 125 },
++ { 0x00d18e, 126 },
++ { 0x00d18f, 127 },
++ { 0x00d191, 128 },
++ { 0x00d192, 129 },
++ { 0x00d193, 130 },
++ { 0x00d194, 131 },
++ { 0x00d195, 132 },
++ { 0x00d196, 133 },
++ { 0x00d197, 134 },
++ { 0x00d198, 135 },
++ { 0x00d199, 136 },
++ { 0x00d19a, 137 },
++ { 0x00d19b, 138 },
++ { 0x00d19c, 139 },
++ { 0x00d19e, 140 },
++ { 0x00d19f, 141 },
++ { 0x00d290, 142 },
++ { 0x00d291, 143 },
++ { 0xe28093, 144 },
++ { 0xe28094, 145 },
++ { 0xe28098, 146 },
++ { 0xe28099, 147 },
++ { 0xe2809a, 148 },
++ { 0xe2809c, 149 },
++ { 0xe2809d, 150 },
++ { 0xe2809e, 151 },
++ { 0xe280a0, 152 },
++ { 0xe280a1, 153 },
++ { 0xe280a2, 154 },
++ { 0xe280a6, 155 },
++ { 0xe280b0, 156 },
++ { 0xe280b9, 157 },
++ { 0xe280ba, 158 },
++ { 0xe28496, 159 },
++ { 0xe284a2, 160 },
++ { 0xe28899, 161 },
++ { 0xe2889a, 162 },
++ { 0xe28988, 163 },
++ { 0xe289a4, 164 },
++ { 0xe289a5, 165 },
++ { 0xe28ca0, 166 },
++ { 0xe28ca1, 167 },
++ { 0xe29480, 168 },
++ { 0xe29482, 169 },
++ { 0xe2948c, 170 },
++ { 0xe29490, 171 },
++ { 0xe29494, 172 },
++ { 0xe29498, 173 },
++ { 0xe2949c, 174 },
++ { 0xe294a4, 175 },
++ { 0xe294ac, 176 },
++ { 0xe294b4, 177 },
++ { 0xe294bc, 178 },
++ { 0xe29590, 179 },
++ { 0xe29591, 180 },
++ { 0xe29592, 181 },
++ { 0xe29593, 182 },
++ { 0xe29594, 183 },
++ { 0xe29595, 184 },
++ { 0xe29596, 185 },
++ { 0xe29597, 186 },
++ { 0xe29598, 187 },
++ { 0xe29599, 188 },
++ { 0xe2959a, 189 },
++ { 0xe2959b, 190 },
++ { 0xe2959c, 191 },
++ { 0xe2959d, 192 },
++ { 0xe2959e, 193 },
++ { 0xe2959f, 194 },
++ { 0xe295a0, 195 },
++ { 0xe295a1, 196 },
++ { 0xe295a2, 197 },
++ { 0xe295a3, 198 },
++ { 0xe295a4, 199 },
++ { 0xe295a5, 200 },
++ { 0xe295a6, 201 },
++ { 0xe295a7, 202 },
++ { 0xe295a8, 203 },
++ { 0xe295a9, 204 },
++ { 0xe295aa, 205 },
++ { 0xe295ab, 206 },
++ { 0xe295ac, 207 },
++ { 0xe29680, 208 },
++ { 0xe29684, 209 },
++ { 0xe29688, 210 },
++ { 0xe2968c, 211 },
++ { 0xe29690, 212 },
++ { 0xe29691, 213 },
++ { 0xe29692, 214 },
++ { 0xe29693, 215 },
++ { 0xe296a0, 216 },
++ { 0x000000, 0 }
++ };
++
++struct codepage_map codepage_win1251_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x0088, 9 },
++ { 0x0098, 25 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a0, 33 },
++ { 0x00a4, 37 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a9, 42 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x003f, 0 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00bb, 60 },
++ { 0x003f, 0 },
++ { 0x00a8, 41 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x00aa, 43 },
++ { 0x00bd, 62 },
++ { 0x00b2, 51 },
++ { 0x00af, 48 },
++ { 0x00a3, 36 },
++ { 0x008a, 11 },
++ { 0x008c, 13 },
++ { 0x008e, 15 },
++ { 0x008d, 14 },
++ { 0x00a1, 34 },
++ { 0x008f, 16 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x00b8, 57 },
++ { 0x0090, 17 },
++ { 0x0083, 4 },
++ { 0x00ba, 59 },
++ { 0x00be, 63 },
++ { 0x00b3, 52 },
++ { 0x00bf, 64 },
++ { 0x00bc, 61 },
++ { 0x009a, 27 },
++ { 0x009c, 29 },
++ { 0x009e, 31 },
++ { 0x009d, 30 },
++ { 0x00a2, 35 },
++ { 0x009f, 32 },
++ { 0x00a5, 38 },
++ { 0x00b4, 53 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0082, 3 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0084, 5 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0095, 22 },
++ { 0x0085, 6 },
++ { 0x0089, 10 },
++ { 0x008b, 12 },
++ { 0x009b, 28 },
++ { 0x00b9, 58 },
++ { 0x0099, 26 },
++ { 0x0000, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_koi8u_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x009a, 27 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00bf, 64 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x009c, 29 },
++ { 0x003f, 0 },
++ { 0x009d, 30 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x009e, 31 },
++ { 0x003f, 0 },
++ { 0x009f, 32 },
++ { 0x00b3, 52 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00b4, 53 },
++ { 0x003f, 0 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00f7, 120 },
++ { 0x00e7, 104 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00f6, 119 },
++ { 0x00fa, 123 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00e6, 103 },
++ { 0x00e8, 105 },
++ { 0x00e3, 100 },
++ { 0x00fe, 127 },
++ { 0x00fb, 124 },
++ { 0x00fd, 126 },
++ { 0x00ff, 128 },
++ { 0x00f9, 122 },
++ { 0x00f8, 121 },
++ { 0x00fc, 125 },
++ { 0x00e0, 97 },
++ { 0x00f1, 114 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00d7, 88 },
++ { 0x00c7, 72 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00d6, 87 },
++ { 0x00da, 91 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00c6, 71 },
++ { 0x00c8, 73 },
++ { 0x00c3, 68 },
++ { 0x00de, 95 },
++ { 0x00db, 92 },
++ { 0x00dd, 94 },
++ { 0x00df, 96 },
++ { 0x00d9, 90 },
++ { 0x00d8, 89 },
++ { 0x00dc, 93 },
++ { 0x00c0, 65 },
++ { 0x00d1, 82 },
++ { 0x00a3, 36 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a4, 37 },
++ { 0x003f, 0 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00bd, 62 },
++ { 0x00ad, 46 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x0093, 20 },
++ { 0x009b, 28 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x003f, 0 },
++ { 0x00a5, 38 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x003f, 0 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x003f, 0 },
++ { 0x00b5, 54 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x003f, 0 },
++ { 0x00be, 63 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0094, 21 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_ibm866_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00ff, 128 },
++ { 0x00fd, 126 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f8, 121 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00fa, 123 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f0, 113 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f2, 115 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f4, 117 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f6, 119 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f1, 114 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f3, 116 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f5, 118 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f7, 120 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00fc, 125 },
++ { 0x003f, 0 },
++ { 0x00f9, 122 },
++ { 0x00fb, 124 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00c4, 69 },
++ { 0x00b3, 52 },
++ { 0x00da, 91 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00d9, 90 },
++ { 0x00c3, 68 },
++ { 0x00b4, 53 },
++ { 0x00c2, 67 },
++ { 0x00c1, 66 },
++ { 0x00c5, 70 },
++ { 0x00cd, 78 },
++ { 0x00ba, 59 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00c9, 74 },
++ { 0x00b8, 57 },
++ { 0x00b7, 56 },
++ { 0x00bb, 60 },
++ { 0x00d4, 85 },
++ { 0x00d3, 84 },
++ { 0x00c8, 73 },
++ { 0x00be, 63 },
++ { 0x00bd, 62 },
++ { 0x00bc, 61 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00cc, 77 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b9, 58 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00cb, 76 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00ca, 75 },
++ { 0x00d8, 89 },
++ { 0x00d7, 88 },
++ { 0x00ce, 79 },
++ { 0x00df, 96 },
++ { 0x00dc, 93 },
++ { 0x00db, 92 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00fe, 127 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_iso5_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00fd, 126 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00ad, 46 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b3, 52 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00f0, 113 },
++ { 0x0000, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_koi8r_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x009a, 27 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x00bf, 64 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x009c, 29 },
++ { 0x005f, 0 },
++ { 0x009d, 30 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x009e, 31 },
++ { 0x005f, 0 },
++ { 0x009f, 32 },
++ { 0x00b3, 52 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00f7, 120 },
++ { 0x00e7, 104 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00f6, 119 },
++ { 0x00fa, 123 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00e6, 103 },
++ { 0x00e8, 105 },
++ { 0x00e3, 100 },
++ { 0x00fe, 127 },
++ { 0x00fb, 124 },
++ { 0x00fd, 126 },
++ { 0x00ff, 128 },
++ { 0x00f9, 122 },
++ { 0x00f8, 121 },
++ { 0x00fc, 125 },
++ { 0x00e0, 97 },
++ { 0x00f1, 114 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00d7, 88 },
++ { 0x00c7, 72 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00d6, 87 },
++ { 0x00da, 91 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00c6, 71 },
++ { 0x00c8, 73 },
++ { 0x00c3, 68 },
++ { 0x00de, 95 },
++ { 0x00db, 92 },
++ { 0x00dd, 94 },
++ { 0x00df, 96 },
++ { 0x00d9, 90 },
++ { 0x00d8, 89 },
++ { 0x00dc, 93 },
++ { 0x00c0, 65 },
++ { 0x00d1, 82 },
++ { 0x00a3, 36 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x005f, 0 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x0093, 20 },
++ { 0x009b, 28 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0094, 21 },
++ { 0x0000, 0 }
++ };
++
+diff -urN vsftpd-2.0.5.org/char_maps/soutern.map vsftpd-2.0.5/char_maps/soutern.map
+--- vsftpd-2.0.5.org/char_maps/soutern.map 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/char_maps/soutern.map 2008-01-13 20:09:59.000000000 +0200
+@@ -0,0 +1,259 @@
++/*
++ !!! WARNING !!!
++ DON'T CHANGE ORDER OF CHARS
++*/
++
++struct codepage_map codepage_utf8sout_array[] =
++ {
++ { 0x000003, 121 }, // max size , char count
++ { 0x00c280, 1 },
++ { 0x00c281, 2 },
++ { 0x00c282, 3 },
++ { 0x00c283, 4 },
++ { 0x00c284, 5 },
++ { 0x00c285, 6 },
++ { 0x00c286, 7 },
++ { 0x00c287, 8 },
++ { 0x00c288, 9 },
++ { 0x00c289, 10 },
++ { 0x00c28a, 11 },
++ { 0x00c28b, 12 },
++ { 0x00c28c, 13 },
++ { 0x00c28d, 14 },
++ { 0x00c28e, 15 },
++ { 0x00c28f, 16 },
++ { 0x00c290, 17 },
++ { 0x00c291, 18 },
++ { 0x00c292, 19 },
++ { 0x00c293, 20 },
++ { 0x00c294, 21 },
++ { 0x00c295, 22 },
++ { 0x00c296, 23 },
++ { 0x00c297, 24 },
++ { 0x00c298, 25 },
++ { 0x00c299, 26 },
++ { 0x00c29a, 27 },
++ { 0x00c29b, 28 },
++ { 0x00c29c, 29 },
++ { 0x00c29d, 30 },
++ { 0x00c29e, 31 },
++ { 0x00c29f, 32 },
++ { 0x00c2a0, 33 },
++ { 0x00c2a3, 34 },
++ { 0x00c2a4, 35 },
++ { 0x00c2a7, 36 },
++ { 0x00c2a8, 37 },
++ { 0x00c2ad, 38 },
++ { 0x00c2b0, 39 },
++ { 0x00c2b2, 40 },
++ { 0x00c2b3, 41 },
++ { 0x00c2b4, 42 },
++ { 0x00c2b5, 43 },
++ { 0x00c2b7, 44 },
++ { 0x00c2b8, 45 },
++ { 0x00c2bd, 46 },
++ { 0x00c380, 47 },
++ { 0x00c381, 48 },
++ { 0x00c382, 49 },
++ { 0x00c384, 50 },
++ { 0x00c387, 51 },
++ { 0x00c388, 52 },
++ { 0x00c389, 53 },
++ { 0x00c38a, 54 },
++ { 0x00c38b, 55 },
++ { 0x00c38c, 56 },
++ { 0x00c38d, 57 },
++ { 0x00c38e, 58 },
++ { 0x00c38f, 59 },
++ { 0x00c391, 60 },
++ { 0x00c392, 61 },
++ { 0x00c393, 62 },
++ { 0x00c394, 63 },
++ { 0x00c396, 64 },
++ { 0x00c397, 65 },
++ { 0x00c399, 66 },
++ { 0x00c39a, 67 },
++ { 0x00c39b, 68 },
++ { 0x00c39c, 69 },
++ { 0x00c39f, 70 },
++ { 0x00c3a0, 71 },
++ { 0x00c3a1, 72 },
++ { 0x00c3a2, 73 },
++ { 0x00c3a4, 74 },
++ { 0x00c3a7, 75 },
++ { 0x00c3a8, 76 },
++ { 0x00c3a9, 77 },
++ { 0x00c3aa, 78 },
++ { 0x00c3ab, 79 },
++ { 0x00c3ac, 80 },
++ { 0x00c3ad, 81 },
++ { 0x00c3ae, 82 },
++ { 0x00c3af, 83 },
++ { 0x00c3b1, 84 },
++ { 0x00c3b2, 85 },
++ { 0x00c3b3, 86 },
++ { 0x00c3b4, 87 },
++ { 0x00c3b6, 88 },
++ { 0x00c3b7, 89 },
++ { 0x00c3b9, 90 },
++ { 0x00c3ba, 91 },
++ { 0x00c3bb, 92 },
++ { 0x00c3bc, 93 },
++ { 0x00c488, 94 },
++ { 0x00c489, 95 },
++ { 0x00c48a, 96 },
++ { 0x00c48b, 97 },
++ { 0x00c49c, 98 },
++ { 0x00c49d, 99 },
++ { 0x00c49e, 100 },
++ { 0x00c49f, 101 },
++ { 0x00c4a0, 102 },
++ { 0x00c4a1, 103 },
++ { 0x00c4a4, 104 },
++ { 0x00c4a5, 105 },
++ { 0x00c4a6, 106 },
++ { 0x00c4a7, 107 },
++ { 0x00c4b0, 108 },
++ { 0x00c4b1, 109 },
++ { 0x00c4b4, 110 },
++ { 0x00c4b5, 111 },
++ { 0x00c59c, 112 },
++ { 0x00c59d, 113 },
++ { 0x00c59e, 114 },
++ { 0x00c59f, 115 },
++ { 0x00c5ac, 116 },
++ { 0x00c5ad, 117 },
++ { 0x00c5bb, 118 },
++ { 0x00c5bc, 119 },
++ { 0x00cb98, 120 },
++ { 0x00cb99, 121 },
++ { 0x000000, 0 }
++ };
++
++struct codepage_map codepage_iso3_array[] =
++ {
++ { 0x0001, 121 }, // max size , char count for control
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a7, 39 },
++ { 0x00a8, 40 },
++ { 0x00ad, 45 },
++ { 0x00b0, 47 },
++ { 0x00b2, 49 },
++ { 0x00b3, 50 },
++ { 0x00b4, 51 },
++ { 0x00b5, 52 },
++ { 0x00b7, 54 },
++ { 0x00b8, 55 },
++ { 0x00bd, 60 },
++ { 0x00c0, 62 },
++ { 0x00c1, 63 },
++ { 0x00c2, 64 },
++ { 0x00c4, 65 },
++ { 0x00c7, 68 },
++ { 0x00c8, 69 },
++ { 0x00c9, 70 },
++ { 0x00ca, 71 },
++ { 0x00cb, 72 },
++ { 0x00cc, 73 },
++ { 0x00cd, 74 },
++ { 0x00ce, 75 },
++ { 0x00cf, 76 },
++ { 0x00d1, 77 },
++ { 0x00d2, 78 },
++ { 0x00d3, 79 },
++ { 0x00d4, 80 },
++ { 0x00d6, 82 },
++ { 0x00d7, 83 },
++ { 0x00d9, 85 },
++ { 0x00da, 86 },
++ { 0x00db, 87 },
++ { 0x00dc, 88 },
++ { 0x00df, 91 },
++ { 0x00e0, 92 },
++ { 0x00e1, 93 },
++ { 0x00e2, 94 },
++ { 0x00e4, 95 },
++ { 0x00e7, 98 },
++ { 0x00e8, 99 },
++ { 0x00e9, 100 },
++ { 0x00ea, 101 },
++ { 0x00eb, 102 },
++ { 0x00ec, 103 },
++ { 0x00ed, 104 },
++ { 0x00ee, 105 },
++ { 0x00ef, 106 },
++ { 0x00f1, 107 },
++ { 0x00f2, 108 },
++ { 0x00f3, 109 },
++ { 0x00f4, 110 },
++ { 0x00f6, 112 },
++ { 0x00f7, 113 },
++ { 0x00f9, 115 },
++ { 0x00fa, 116 },
++ { 0x00fb, 117 },
++ { 0x00fc, 118 },
++ { 0x00c6, 67 },
++ { 0x00e6, 97 },
++ { 0x00c5, 66 },
++ { 0x00e5, 96 },
++ { 0x00d8, 84 },
++ { 0x00f8, 114 },
++ { 0x00ab, 43 },
++ { 0x00bb, 58 },
++ { 0x00d5, 81 },
++ { 0x00f5, 111 },
++ { 0x00a6, 38 },
++ { 0x00b6, 53 },
++ { 0x00a1, 34 },
++ { 0x00b1, 48 },
++ { 0x00a9, 41 },
++ { 0x00b9, 56 },
++ { 0x00ac, 44 },
++ { 0x00bc, 59 },
++ { 0x00de, 90 },
++ { 0x00fe, 120 },
++ { 0x00aa, 42 },
++ { 0x00ba, 57 },
++ { 0x00dd, 89 },
++ { 0x00fd, 119 },
++ { 0x00af, 46 },
++ { 0x00bf, 61 },
++ { 0x00a2, 35 },
++ { 0x00ff, 121 },
++ { 0x0000, 0 }
++ };
++
+diff -urN vsftpd-2.0.5.org/char_maps/utf8.map vsftpd-2.0.5/char_maps/utf8.map
+--- vsftpd-2.0.5.org/char_maps/utf8.map 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/char_maps/utf8.map 2008-01-13 20:09:59.000000000 +0200
+@@ -0,0 +1,393 @@
++/*
++ !!! WARNING !!!
++ DON'T CHANGE ORDER OF CHARS
++*/
++
++struct codepage_map codepage_utf8_array[] =
++ {
++ { 0x000003, 382 }, // max size , char count
++ { 0x00c280, 1 },
++ { 0x00c281, 2 },
++ { 0x00c282, 3 },
++ { 0x00c283, 4 },
++ { 0x00c284, 5 },
++ { 0x00c285, 6 },
++ { 0x00c286, 7 },
++ { 0x00c287, 8 },
++ { 0x00c288, 9 },
++ { 0x00c289, 10 },
++ { 0x00c28a, 11 },
++ { 0x00c28b, 12 },
++ { 0x00c28c, 13 },
++ { 0x00c28d, 14 },
++ { 0x00c28e, 15 },
++ { 0x00c28f, 16 },
++ { 0x00c290, 17 },
++ { 0x00c291, 18 },
++ { 0x00c292, 19 },
++ { 0x00c293, 20 },
++ { 0x00c294, 21 },
++ { 0x00c295, 22 },
++ { 0x00c296, 23 },
++ { 0x00c297, 24 },
++ { 0x00c298, 25 },
++ { 0x00c299, 26 },
++ { 0x00c29a, 27 },
++ { 0x00c29b, 28 },
++ { 0x00c29c, 29 },
++ { 0x00c29d, 30 },
++ { 0x00c29e, 31 },
++ { 0x00c29f, 32 },
++ { 0x00c2a0, 33 },
++ { 0x00c2a1, 34 },
++ { 0x00c2a2, 35 },
++ { 0x00c2a3, 36 },
++ { 0x00c2a4, 37 },
++ { 0x00c2a5, 38 },
++ { 0x00c2a6, 39 },
++ { 0x00c2a7, 40 },
++ { 0x00c2a8, 41 },
++ { 0x00c2a9, 42 },
++ { 0x00c2aa, 43 },
++ { 0x00c2ab, 44 },
++ { 0x00c2ac, 45 },
++ { 0x00c2ad, 46 },
++ { 0x00c2ae, 47 },
++ { 0x00c2af, 48 },
++ { 0x00c2b0, 49 },
++ { 0x00c2b1, 50 },
++ { 0x00c2b2, 51 },
++ { 0x00c2b3, 52 },
++ { 0x00c2b4, 53 },
++ { 0x00c2b5, 54 },
++ { 0x00c2b6, 55 },
++ { 0x00c2b7, 56 },
++ { 0x00c2b8, 57 },
++ { 0x00c2b9, 58 },
++ { 0x00c2ba, 59 },
++ { 0x00c2bb, 60 },
++ { 0x00c2bc, 61 },
++ { 0x00c2bd, 62 },
++ { 0x00c2be, 63 },
++ { 0x00c2bf, 64 },
++ { 0x00c380, 65 },
++ { 0x00c381, 66 },
++ { 0x00c382, 67 },
++ { 0x00c383, 68 },
++ { 0x00c384, 69 },
++ { 0x00c385, 70 },
++ { 0x00c386, 71 },
++ { 0x00c387, 72 },
++ { 0x00c388, 73 },
++ { 0x00c389, 74 },
++ { 0x00c38a, 75 },
++ { 0x00c38b, 76 },
++ { 0x00c38c, 77 },
++ { 0x00c38d, 78 },
++ { 0x00c38e, 79 },
++ { 0x00c38f, 80 },
++ { 0x00c390, 81 },
++ { 0x00c391, 82 },
++ { 0x00c392, 83 },
++ { 0x00c393, 84 },
++ { 0x00c394, 85 },
++ { 0x00c395, 86 },
++ { 0x00c396, 87 },
++ { 0x00c397, 88 },
++ { 0x00c398, 89 },
++ { 0x00c399, 90 },
++ { 0x00c39a, 91 },
++ { 0x00c39b, 92 },
++ { 0x00c39c, 93 },
++ { 0x00c39d, 94 },
++ { 0x00c39e, 95 },
++ { 0x00c39f, 96 },
++ { 0x00c3a0, 97 },
++ { 0x00c3a1, 98 },
++ { 0x00c3a2, 99 },
++ { 0x00c3a3, 100 },
++ { 0x00c3a4, 101 },
++ { 0x00c3a5, 102 },
++ { 0x00c3a6, 103 },
++ { 0x00c3a7, 104 },
++ { 0x00c3a8, 105 },
++ { 0x00c3a9, 106 },
++ { 0x00c3aa, 107 },
++ { 0x00c3ab, 108 },
++ { 0x00c3ac, 109 },
++ { 0x00c3ad, 110 },
++ { 0x00c3ae, 111 },
++ { 0x00c3af, 112 },
++ { 0x00c3b0, 113 },
++ { 0x00c3b1, 114 },
++ { 0x00c3b2, 115 },
++ { 0x00c3b3, 116 },
++ { 0x00c3b4, 117 },
++ { 0x00c3b5, 118 },
++ { 0x00c3b6, 119 },
++ { 0x00c3b7, 120 },
++ { 0x00c3b8, 121 },
++ { 0x00c3b9, 122 },
++ { 0x00c3ba, 123 },
++ { 0x00c3bb, 124 },
++ { 0x00c3bc, 125 },
++ { 0x00c3bd, 126 },
++ { 0x00c3be, 127 },
++ { 0x00c3bf, 128 },
++ { 0x00c482, 129 },
++ { 0x00c483, 130 },
++ { 0x00c484, 131 },
++ { 0x00c485, 132 },
++ { 0x00c486, 133 },
++ { 0x00c487, 134 },
++ { 0x00c488, 135 },
++ { 0x00c489, 136 },
++ { 0x00c48a, 137 },
++ { 0x00c48b, 138 },
++ { 0x00c48c, 139 },
++ { 0x00c48d, 140 },
++ { 0x00c48e, 141 },
++ { 0x00c48f, 142 },
++ { 0x00c490, 143 },
++ { 0x00c491, 144 },
++ { 0x00c498, 145 },
++ { 0x00c499, 146 },
++ { 0x00c49a, 147 },
++ { 0x00c49b, 148 },
++ { 0x00c49c, 149 },
++ { 0x00c49d, 150 },
++ { 0x00c49e, 151 },
++ { 0x00c49f, 152 },
++ { 0x00c4a0, 153 },
++ { 0x00c4a1, 154 },
++ { 0x00c4a4, 155 },
++ { 0x00c4a5, 156 },
++ { 0x00c4a6, 157 },
++ { 0x00c4a7, 158 },
++ { 0x00c4b0, 159 },
++ { 0x00c4b1, 160 },
++ { 0x00c4b4, 161 },
++ { 0x00c4b5, 162 },
++ { 0x00c4b9, 163 },
++ { 0x00c4ba, 164 },
++ { 0x00c4bd, 165 },
++ { 0x00c4be, 166 },
++ { 0x00c581, 167 },
++ { 0x00c582, 168 },
++ { 0x00c583, 169 },
++ { 0x00c584, 170 },
++ { 0x00c587, 171 },
++ { 0x00c588, 172 },
++ { 0x00c590, 173 },
++ { 0x00c591, 174 },
++ { 0x00c592, 175 },
++ { 0x00c593, 176 },
++ { 0x00c594, 177 },
++ { 0x00c595, 178 },
++ { 0x00c598, 179 },
++ { 0x00c599, 180 },
++ { 0x00c59a, 181 },
++ { 0x00c59b, 182 },
++ { 0x00c59c, 183 },
++ { 0x00c59d, 184 },
++ { 0x00c59e, 185 },
++ { 0x00c59f, 186 },
++ { 0x00c5a0, 187 },
++ { 0x00c5a1, 188 },
++ { 0x00c5a2, 189 },
++ { 0x00c5a3, 190 },
++ { 0x00c5a4, 191 },
++ { 0x00c5a5, 192 },
++ { 0x00c5ac, 193 },
++ { 0x00c5ad, 194 },
++ { 0x00c5ae, 195 },
++ { 0x00c5af, 196 },
++ { 0x00c5b0, 197 },
++ { 0x00c5b1, 198 },
++ { 0x00c5b8, 199 },
++ { 0x00c5b9, 200 },
++ { 0x00c5ba, 201 },
++ { 0x00c5bb, 202 },
++ { 0x00c5bc, 203 },
++ { 0x00c5bd, 204 },
++ { 0x00c5be, 205 },
++ { 0x00c692, 206 },
++ { 0x00c89a, 207 },
++ { 0x00cb86, 208 },
++ { 0x00cb87, 209 },
++ { 0x00cb98, 210 },
++ { 0x00cb99, 211 },
++ { 0x00cb9b, 212 },
++ { 0x00cb9c, 213 },
++ { 0x00cb9d, 214 },
++ { 0x00d081, 215 },
++ { 0x00d082, 216 },
++ { 0x00d083, 217 },
++ { 0x00d084, 218 },
++ { 0x00d085, 219 },
++ { 0x00d086, 220 },
++ { 0x00d087, 221 },
++ { 0x00d088, 222 },
++ { 0x00d089, 223 },
++ { 0x00d08a, 224 },
++ { 0x00d08b, 225 },
++ { 0x00d08c, 226 },
++ { 0x00d08e, 227 },
++ { 0x00d08f, 228 },
++ { 0x00d090, 229 },
++ { 0x00d091, 230 },
++ { 0x00d092, 231 },
++ { 0x00d093, 232 },
++ { 0x00d094, 233 },
++ { 0x00d095, 234 },
++ { 0x00d096, 235 },
++ { 0x00d097, 236 },
++ { 0x00d098, 237 },
++ { 0x00d099, 238 },
++ { 0x00d09a, 239 },
++ { 0x00d09b, 240 },
++ { 0x00d09c, 241 },
++ { 0x00d09d, 242 },
++ { 0x00d09e, 243 },
++ { 0x00d09f, 244 },
++ { 0x00d0a0, 245 },
++ { 0x00d0a1, 246 },
++ { 0x00d0a2, 247 },
++ { 0x00d0a3, 248 },
++ { 0x00d0a4, 249 },
++ { 0x00d0a5, 250 },
++ { 0x00d0a6, 251 },
++ { 0x00d0a7, 252 },
++ { 0x00d0a8, 253 },
++ { 0x00d0a9, 254 },
++ { 0x00d0aa, 255 },
++ { 0x00d0ab, 256 },
++ { 0x00d0ac, 257 },
++ { 0x00d0ad, 258 },
++ { 0x00d0ae, 259 },
++ { 0x00d0af, 260 },
++ { 0x00d0b0, 261 },
++ { 0x00d0b1, 262 },
++ { 0x00d0b2, 263 },
++ { 0x00d0b3, 264 },
++ { 0x00d0b4, 265 },
++ { 0x00d0b5, 266 },
++ { 0x00d0b6, 267 },
++ { 0x00d0b7, 268 },
++ { 0x00d0b8, 269 },
++ { 0x00d0b9, 270 },
++ { 0x00d0ba, 271 },
++ { 0x00d0bb, 272 },
++ { 0x00d0bc, 273 },
++ { 0x00d0bd, 274 },
++ { 0x00d0be, 275 },
++ { 0x00d0bf, 276 },
++ { 0x00d180, 277 },
++ { 0x00d181, 278 },
++ { 0x00d182, 279 },
++ { 0x00d183, 280 },
++ { 0x00d184, 281 },
++ { 0x00d185, 282 },
++ { 0x00d186, 283 },
++ { 0x00d187, 284 },
++ { 0x00d188, 285 },
++ { 0x00d189, 286 },
++ { 0x00d18a, 287 },
++ { 0x00d18b, 288 },
++ { 0x00d18c, 289 },
++ { 0x00d18d, 290 },
++ { 0x00d18e, 291 },
++ { 0x00d18f, 292 },
++ { 0x00d191, 293 },
++ { 0x00d192, 294 },
++ { 0x00d193, 295 },
++ { 0x00d194, 296 },
++ { 0x00d195, 297 },
++ { 0x00d196, 298 },
++ { 0x00d197, 299 },
++ { 0x00d198, 300 },
++ { 0x00d199, 301 },
++ { 0x00d19a, 302 },
++ { 0x00d19b, 303 },
++ { 0x00d19c, 304 },
++ { 0x00d19e, 305 },
++ { 0x00d19f, 306 },
++ { 0x00d290, 307 },
++ { 0x00d291, 308 },
++ { 0xe28093, 309 },
++ { 0xe28094, 310 },
++ { 0xe28098, 311 },
++ { 0xe28099, 312 },
++ { 0xe2809a, 313 },
++ { 0xe2809c, 314 },
++ { 0xe2809d, 315 },
++ { 0xe2809e, 316 },
++ { 0xe280a0, 317 },
++ { 0xe280a1, 318 },
++ { 0xe280a2, 319 },
++ { 0xe280a6, 320 },
++ { 0xe280b0, 321 },
++ { 0xe280b9, 322 },
++ { 0xe280ba, 323 },
++ { 0xe282ac, 324 },
++ { 0xe28496, 325 },
++ { 0xe284a2, 326 },
++ { 0xe28899, 327 },
++ { 0xe2889a, 328 },
++ { 0xe28988, 329 },
++ { 0xe289a4, 330 },
++ { 0xe289a5, 331 },
++ { 0xe28ca0, 332 },
++ { 0xe28ca1, 333 },
++ { 0xe29480, 334 },
++ { 0xe29482, 335 },
++ { 0xe2948c, 336 },
++ { 0xe29490, 337 },
++ { 0xe29494, 338 },
++ { 0xe29498, 339 },
++ { 0xe2949c, 340 },
++ { 0xe294a4, 341 },
++ { 0xe294ac, 342 },
++ { 0xe294b4, 343 },
++ { 0xe294bc, 344 },
++ { 0xe29590, 345 },
++ { 0xe29591, 346 },
++ { 0xe29592, 347 },
++ { 0xe29593, 348 },
++ { 0xe29594, 349 },
++ { 0xe29595, 350 },
++ { 0xe29596, 351 },
++ { 0xe29597, 352 },
++ { 0xe29598, 353 },
++ { 0xe29599, 354 },
++ { 0xe2959a, 355 },
++ { 0xe2959b, 356 },
++ { 0xe2959c, 357 },
++ { 0xe2959d, 358 },
++ { 0xe2959e, 359 },
++ { 0xe2959f, 360 },
++ { 0xe295a0, 361 },
++ { 0xe295a1, 362 },
++ { 0xe295a2, 363 },
++ { 0xe295a3, 364 },
++ { 0xe295a4, 365 },
++ { 0xe295a5, 366 },
++ { 0xe295a6, 367 },
++ { 0xe295a7, 368 },
++ { 0xe295a8, 369 },
++ { 0xe295a9, 370 },
++ { 0xe295aa, 371 },
++ { 0xe295ab, 372 },
++ { 0xe295ac, 373 },
++ { 0xe29680, 374 },
++ { 0xe29684, 375 },
++ { 0xe29688, 376 },
++ { 0xe2968c, 377 },
++ { 0xe29690, 378 },
++ { 0xe29691, 379 },
++ { 0xe29692, 380 },
++ { 0xe29693, 381 },
++ { 0xe296a0, 382 },
++ { 0x000000, 0 }
++ };
++
+diff -urN vsftpd-2.0.5.org/char_maps/western.map vsftpd-2.0.5/char_maps/western.map
+--- vsftpd-2.0.5.org/char_maps/western.map 1970-01-01 03:00:00.000000000 +0300
++++ vsftpd-2.0.5/char_maps/western.map 2008-01-13 20:09:59.000000000 +0200
+@@ -0,0 +1,669 @@
++/*
++ !!! WARNING !!!
++ DON'T CHANGE ORDER OF CHARS
++*/
++
++struct codepage_map codepage_utf8west_array[] =
++ {
++ { 0x000003, 155 }, // max size , char count
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00003f, 0 },
++ { 0x00c280, 1 },
++ { 0x00c281, 2 },
++ { 0x00c282, 3 },
++ { 0x00c283, 4 },
++ { 0x00c284, 5 },
++ { 0x00c285, 6 },
++ { 0x00c286, 7 },
++ { 0x00c287, 8 },
++ { 0x00c288, 9 },
++ { 0x00c289, 10 },
++ { 0x00c28a, 11 },
++ { 0x00c28b, 12 },
++ { 0x00c28c, 13 },
++ { 0x00c28d, 14 },
++ { 0x00c28e, 15 },
++ { 0x00c28f, 16 },
++ { 0x00c290, 17 },
++ { 0x00c291, 18 },
++ { 0x00c292, 19 },
++ { 0x00c293, 20 },
++ { 0x00c294, 21 },
++ { 0x00c295, 22 },
++ { 0x00c296, 23 },
++ { 0x00c297, 24 },
++ { 0x00c298, 25 },
++ { 0x00c299, 26 },
++ { 0x00c29a, 27 },
++ { 0x00c29b, 28 },
++ { 0x00c29c, 29 },
++ { 0x00c29d, 30 },
++ { 0x00c29e, 31 },
++ { 0x00c29f, 32 },
++ { 0x00c2a0, 33 },
++ { 0x00c2a1, 34 },
++ { 0x00c2a2, 35 },
++ { 0x00c2a3, 36 },
++ { 0x00c2a4, 37 },
++ { 0x00c2a5, 38 },
++ { 0x00c2a6, 39 },
++ { 0x00c2a7, 40 },
++ { 0x00c2a8, 41 },
++ { 0x00c2a9, 42 },
++ { 0x00c2aa, 43 },
++ { 0x00c2ab, 44 },
++ { 0x00c2ac, 45 },
++ { 0x00c2ad, 46 },
++ { 0x00c2ae, 47 },
++ { 0x00c2af, 48 },
++ { 0x00c2b0, 49 },
++ { 0x00c2b1, 50 },
++ { 0x00c2b2, 51 },
++ { 0x00c2b3, 52 },
++ { 0x00c2b4, 53 },
++ { 0x00c2b5, 54 },
++ { 0x00c2b6, 55 },
++ { 0x00c2b7, 56 },
++ { 0x00c2b8, 57 },
++ { 0x00c2b9, 58 },
++ { 0x00c2ba, 59 },
++ { 0x00c2bb, 60 },
++ { 0x00c2bc, 61 },
++ { 0x00c2bd, 62 },
++ { 0x00c2be, 63 },
++ { 0x00c2bf, 64 },
++ { 0x00c380, 65 },
++ { 0x00c381, 66 },
++ { 0x00c382, 67 },
++ { 0x00c383, 68 },
++ { 0x00c384, 69 },
++ { 0x00c385, 70 },
++ { 0x00c386, 71 },
++ { 0x00c387, 72 },
++ { 0x00c388, 73 },
++ { 0x00c389, 74 },
++ { 0x00c38a, 75 },
++ { 0x00c38b, 76 },
++ { 0x00c38c, 77 },
++ { 0x00c38d, 78 },
++ { 0x00c38e, 79 },
++ { 0x00c38f, 80 },
++ { 0x00c390, 81 },
++ { 0x00c391, 82 },
++ { 0x00c392, 83 },
++ { 0x00c393, 84 },
++ { 0x00c394, 85 },
++ { 0x00c395, 86 },
++ { 0x00c396, 87 },
++ { 0x00c397, 88 },
++ { 0x00c398, 89 },
++ { 0x00c399, 90 },
++ { 0x00c39a, 91 },
++ { 0x00c39b, 92 },
++ { 0x00c39c, 93 },
++ { 0x00c39d, 94 },
++ { 0x00c39e, 95 },
++ { 0x00c39f, 96 },
++ { 0x00c3a0, 97 },
++ { 0x00c3a1, 98 },
++ { 0x00c3a2, 99 },
++ { 0x00c3a3, 100 },
++ { 0x00c3a4, 101 },
++ { 0x00c3a5, 102 },
++ { 0x00c3a6, 103 },
++ { 0x00c3a7, 104 },
++ { 0x00c3a8, 105 },
++ { 0x00c3a9, 106 },
++ { 0x00c3aa, 107 },
++ { 0x00c3ab, 108 },
++ { 0x00c3ac, 109 },
++ { 0x00c3ad, 110 },
++ { 0x00c3ae, 111 },
++ { 0x00c3af, 112 },
++ { 0x00c3b0, 113 },
++ { 0x00c3b1, 114 },
++ { 0x00c3b2, 115 },
++ { 0x00c3b3, 116 },
++ { 0x00c3b4, 117 },
++ { 0x00c3b5, 118 },
++ { 0x00c3b6, 119 },
++ { 0x00c3b7, 120 },
++ { 0x00c3b8, 121 },
++ { 0x00c3b9, 122 },
++ { 0x00c3ba, 123 },
++ { 0x00c3bb, 124 },
++ { 0x00c3bc, 125 },
++ { 0x00c3bd, 126 },
++ { 0x00c3be, 127 },
++ { 0x00c3bf, 128 },
++ { 0x00c592, 129 },
++ { 0x00c593, 130 },
++ { 0x00c5a0, 131 },
++ { 0x00c5a1, 132 },
++ { 0x00c5b8, 133 },
++ { 0x00c5bd, 134 },
++ { 0x00c5be, 135 },
++ { 0x00c692, 136 },
++ { 0x00cb86, 137 },
++ { 0x00cb9c, 138 },
++ { 0xe28093, 139 },
++ { 0xe28094, 140 },
++ { 0xe28098, 141 },
++ { 0xe28099, 142 },
++ { 0xe2809a, 143 },
++ { 0xe2809c, 144 },
++ { 0xe2809d, 145 },
++ { 0xe2809e, 146 },
++ { 0xe280a0, 147 },
++ { 0xe280a1, 148 },
++ { 0xe280a2, 149 },
++ { 0xe280a6, 150 },
++ { 0xe280b0, 151 },
++ { 0xe280b9, 152 },
++ { 0xe280ba, 153 },
++ { 0xe282ac, 154 },
++ { 0xe284a2, 155 },
++ { 0x000000, 0 }
++ };
++
++struct codepage_map codepage_iso1_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b3, 52 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x0000, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_iso15_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x0080, 1 },
++ { 0x0081, 2 },
++ { 0x0082, 3 },
++ { 0x0083, 4 },
++ { 0x0084, 5 },
++ { 0x0085, 6 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0088, 9 },
++ { 0x0089, 10 },
++ { 0x008a, 11 },
++ { 0x008b, 12 },
++ { 0x008c, 13 },
++ { 0x008d, 14 },
++ { 0x008e, 15 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0095, 22 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0098, 25 },
++ { 0x0099, 26 },
++ { 0x009a, 27 },
++ { 0x009b, 28 },
++ { 0x009c, 29 },
++ { 0x009d, 30 },
++ { 0x009e, 31 },
++ { 0x009f, 32 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x003f, 0 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b3, 52 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a4, 37 },
++ { 0x003f, 0 },
++ { 0x0000, 0 }
++ };
++
++struct codepage_map codepage_win1252_array[] =
++ {
++ { 0x0001, 128 }, // max size , char count for control
++ { 0x0081, 2 },
++ { 0x008d, 14 },
++ { 0x008f, 16 },
++ { 0x0090, 17 },
++ { 0x009d, 30 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x003f, 0 },
++ { 0x00a0, 33 },
++ { 0x00a1, 34 },
++ { 0x00a2, 35 },
++ { 0x00a3, 36 },
++ { 0x00a4, 37 },
++ { 0x00a5, 38 },
++ { 0x00a6, 39 },
++ { 0x00a7, 40 },
++ { 0x00a8, 41 },
++ { 0x00a9, 42 },
++ { 0x00aa, 43 },
++ { 0x00ab, 44 },
++ { 0x00ac, 45 },
++ { 0x00ad, 46 },
++ { 0x00ae, 47 },
++ { 0x00af, 48 },
++ { 0x00b0, 49 },
++ { 0x00b1, 50 },
++ { 0x00b2, 51 },
++ { 0x00b3, 52 },
++ { 0x00b4, 53 },
++ { 0x00b5, 54 },
++ { 0x00b6, 55 },
++ { 0x00b7, 56 },
++ { 0x00b8, 57 },
++ { 0x00b9, 58 },
++ { 0x00ba, 59 },
++ { 0x00bb, 60 },
++ { 0x00bc, 61 },
++ { 0x00bd, 62 },
++ { 0x00be, 63 },
++ { 0x00bf, 64 },
++ { 0x00c0, 65 },
++ { 0x00c1, 66 },
++ { 0x00c2, 67 },
++ { 0x00c3, 68 },
++ { 0x00c4, 69 },
++ { 0x00c5, 70 },
++ { 0x00c6, 71 },
++ { 0x00c7, 72 },
++ { 0x00c8, 73 },
++ { 0x00c9, 74 },
++ { 0x00ca, 75 },
++ { 0x00cb, 76 },
++ { 0x00cc, 77 },
++ { 0x00cd, 78 },
++ { 0x00ce, 79 },
++ { 0x00cf, 80 },
++ { 0x00d0, 81 },
++ { 0x00d1, 82 },
++ { 0x00d2, 83 },
++ { 0x00d3, 84 },
++ { 0x00d4, 85 },
++ { 0x00d5, 86 },
++ { 0x00d6, 87 },
++ { 0x00d7, 88 },
++ { 0x00d8, 89 },
++ { 0x00d9, 90 },
++ { 0x00da, 91 },
++ { 0x00db, 92 },
++ { 0x00dc, 93 },
++ { 0x00dd, 94 },
++ { 0x00de, 95 },
++ { 0x00df, 96 },
++ { 0x00e0, 97 },
++ { 0x00e1, 98 },
++ { 0x00e2, 99 },
++ { 0x00e3, 100 },
++ { 0x00e4, 101 },
++ { 0x00e5, 102 },
++ { 0x00e6, 103 },
++ { 0x00e7, 104 },
++ { 0x00e8, 105 },
++ { 0x00e9, 106 },
++ { 0x00ea, 107 },
++ { 0x00eb, 108 },
++ { 0x00ec, 109 },
++ { 0x00ed, 110 },
++ { 0x00ee, 111 },
++ { 0x00ef, 112 },
++ { 0x00f0, 113 },
++ { 0x00f1, 114 },
++ { 0x00f2, 115 },
++ { 0x00f3, 116 },
++ { 0x00f4, 117 },
++ { 0x00f5, 118 },
++ { 0x00f6, 119 },
++ { 0x00f7, 120 },
++ { 0x00f8, 121 },
++ { 0x00f9, 122 },
++ { 0x00fa, 123 },
++ { 0x00fb, 124 },
++ { 0x00fc, 125 },
++ { 0x00fd, 126 },
++ { 0x00fe, 127 },
++ { 0x00ff, 128 },
++ { 0x008c, 13 },
++ { 0x009c, 29 },
++ { 0x008a, 11 },
++ { 0x009a, 27 },
++ { 0x009f, 32 },
++ { 0x008e, 15 },
++ { 0x009e, 31 },
++ { 0x0083, 4 },
++ { 0x0088, 9 },
++ { 0x0098, 25 },
++ { 0x0096, 23 },
++ { 0x0097, 24 },
++ { 0x0091, 18 },
++ { 0x0092, 19 },
++ { 0x0082, 3 },
++ { 0x0093, 20 },
++ { 0x0094, 21 },
++ { 0x0084, 5 },
++ { 0x0086, 7 },
++ { 0x0087, 8 },
++ { 0x0095, 22 },
++ { 0x0085, 6 },
++ { 0x0089, 10 },
++ { 0x008b, 12 },
++ { 0x009b, 28 },
++ { 0x0080, 1 },
++ { 0x0099, 26 },
++ { 0x0000, 0 }
++ };
++
+diff -urN vsftpd-2.0.5.org/ftpcmdio.c vsftpd-2.0.5/ftpcmdio.c
+--- vsftpd-2.0.5.org/ftpcmdio.c 2005-03-04 02:42:34.000000000 +0200
++++ vsftpd-2.0.5/ftpcmdio.c 2008-01-13 19:34:50.000000000 +0200
+@@ -19,6 +19,7 @@
+ #include "logging.h"
+ #include "session.h"
+ #include "readwrite.h"
++#include "charconv.h"
+
+ /* Internal functions */
+ static void control_getline(struct mystr* p_str, struct vsf_session* p_sess);
+@@ -125,9 +126,13 @@
+ vsf_log_line(p_sess, kVSFLogEntryFTPOutput, &s_write_buf_str);
+ }
+ str_copy(&s_text_mangle_str, p_str);
++ vsf_charconv_convert(p_sess, &s_text_mangle_str, VSFTP_CONVDIRECT_FORWARD);
+ /* Process the output response according to the specifications.. */
+ /* Escape telnet characters properly */
+- str_replace_text(&s_text_mangle_str, "\377", "\377\377");
++// if (tunable_double_377)
++ {
++ str_replace_text(&s_text_mangle_str, "\377", "\377\377");
++ }
+ /* Change \n for \0 in response */
+ str_replace_char(&s_text_mangle_str, '\n', '\0');
+ /* Build string to squirt down network */
+@@ -213,5 +218,6 @@
+ --len;
+ }
+ }
++ vsf_charconv_convert(p_sess, p_str, VSFTP_CONVDIRECT_BACKWARD);
+ }
+
+diff -urN vsftpd-2.0.5.org/ftpdataio.c vsftpd-2.0.5/ftpdataio.c
+--- vsftpd-2.0.5.org/ftpdataio.c 2005-03-12 04:00:00.000000000 +0200
++++ vsftpd-2.0.5/ftpdataio.c 2008-01-13 19:35:59.000000000 +0200
+@@ -296,7 +296,7 @@
+ {
+ p_subdir_list = &subdir_list;
+ }
+- vsf_ls_populate_dir_list(&dir_list, p_subdir_list, p_dir, p_base_dir_str,
++ vsf_ls_populate_dir_list(p_sess, &dir_list, p_subdir_list, p_dir, p_base_dir_str,
+ p_option_str, p_filter_str, is_verbose);
+ if (p_subdir_list)
+ {
+diff -urN vsftpd-2.0.5.org/ls.c vsftpd-2.0.5/ls.c
+--- vsftpd-2.0.5.org/ls.c 2005-05-24 00:55:00.000000000 +0300
++++ vsftpd-2.0.5/ls.c 2008-01-13 19:32:28.000000000 +0200
+@@ -14,13 +14,16 @@
+ #include "sysstr.h"
+ #include "sysutil.h"
+ #include "tunables.h"
++#include "charconv.h"
+
+-static void build_dir_line(struct mystr* p_str,
++static void build_dir_line(struct vsf_session* p_sess,
++ struct mystr* p_str,
+ const struct mystr* p_filename_str,
+ const struct vsf_sysutil_statbuf* p_stat);
+
+ void
+-vsf_ls_populate_dir_list(struct mystr_list* p_list,
++vsf_ls_populate_dir_list(struct vsf_session* p_sess,
++ struct mystr_list* p_list,
+ struct mystr_list* p_subdir_list,
+ struct vsf_sysutil_dir* p_dir,
+ const struct mystr* p_base_dir_str,
+@@ -157,7 +160,7 @@
+ {
+ str_append_char(&s_final_file_str, '/');
+ }
+- build_dir_line(&dirline_str, &s_final_file_str, s_p_statbuf);
++ build_dir_line(p_sess, &dirline_str, &s_final_file_str, s_p_statbuf);
+ }
+ else
+ {
+@@ -176,6 +179,7 @@
+ str_append_char(&dirline_str, '@');
+ }
+ }
++ vsf_charconv_convert(p_sess, &dirline_str, VSFTP_CONVDIRECT_FORWARD);
+ str_append_text(&dirline_str, "\r\n");
+ }
+ /* Add filename into our sorted list - sorting by filename or time. Also,
+@@ -357,7 +361,7 @@
+ }
+
+ static void
+-build_dir_line(struct mystr* p_str, const struct mystr* p_filename_str,
++build_dir_line(struct vsf_session* p_sess, struct mystr* p_str, const struct mystr* p_filename_str,
+ const struct vsf_sysutil_statbuf* p_stat)
+ {
+ static struct mystr s_tmp_str;
+@@ -431,6 +435,7 @@
+ str_append_char(p_str, ' ');
+ /* Filename */
+ str_append_str(p_str, p_filename_str);
++ vsf_charconv_convert(p_sess, p_str, VSFTP_CONVDIRECT_FORWARD);
+ str_append_text(p_str, "\r\n");
+ }
+
+diff -urN vsftpd-2.0.5.org/ls.h vsftpd-2.0.5/ls.h
+--- vsftpd-2.0.5.org/ls.h 2003-09-15 13:43:40.000000000 +0300
++++ vsftpd-2.0.5/ls.h 2008-01-13 19:32:30.000000000 +0200
+@@ -4,12 +4,14 @@
+ struct mystr;
+ struct mystr_list;
+ struct vsf_sysutil_dir;
++struct vsf_session;
+
+ /* vsf_ls_populate_dir_list()
+ * PURPOSE
+ * Given a directory handle, populate a formatted directory entry list (/bin/ls
+ * format). Also optionally populate a list of subdirectories.
+ * PARAMETERS
++ * p_sess - the current FTP session object
+ * p_list - the string list object for the result list of entries
+ * p_subdir_list - the string list object for the result list of
+ * subdirectories. May be 0 if client is not interested.
+@@ -19,7 +21,8 @@
+ * p_filter_str - the filter string given to LIST/NLST - e.g. "*.mp3"
+ * is_verbose - set to 1 for LIST, 0 for NLST
+ */
+-void vsf_ls_populate_dir_list(struct mystr_list* p_list,
++void vsf_ls_populate_dir_list(struct vsf_session* p_sess,
++ struct mystr_list* p_list,
+ struct mystr_list* p_subdir_list,
+ struct vsf_sysutil_dir* p_dir,
+ const struct mystr* p_base_dir_str,
+diff -urN vsftpd-2.0.5.org/main.c vsftpd-2.0.5/main.c
+--- vsftpd-2.0.5.org/main.c 2006-07-03 15:26:08.000000000 +0300
++++ vsftpd-2.0.5/main.c 2008-01-13 20:51:11.000000000 +0200
+@@ -63,7 +63,9 @@
+ /* Secure connection state */
+ 0, 0, 0, 0, 0, 0, -1, -1,
+ /* Login fails */
+- 0
++ 0,
++ /* Filename charset conv */
++ 0, 0,
+ };
+ int config_specified = 0;
+ const char* p_config_name = VSFTP_DEFAULT_CONFIG;
+@@ -106,6 +108,12 @@
+ }
+ vsf_sysutil_free(p_statbuf);
+ }
++ /* Init local codepage */
++ if (tunable_convert_charset_enable)
++ {
++ tunable_local_codepage = vsf_charconv_codepage(tunable_local_charset);
++ tunable_convert_charset_enable = (tunable_local_codepage) ? 1 : 0;
++ }
+ /* Resolve pasv_address if required */
+ if (tunable_pasv_address && tunable_pasv_addr_resolve)
+ {
+diff -urN vsftpd-2.0.5.org/Makefile vsftpd-2.0.5/Makefile
+--- vsftpd-2.0.5.org/Makefile 2006-07-03 15:25:41.000000000 +0300
++++ vsftpd-2.0.5/Makefile 2008-01-13 19:39:58.000000000 +0200
+@@ -14,7 +14,7 @@
+ banner.o filestr.o parseconf.o secutil.o \
+ ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o \
+ tcpwrap.o ipaddrparse.o access.o features.o readwrite.o \
+- ssl.o sysutil.o sysdeputil.o
++ ssl.o sysutil.o sysdeputil.o charconv.o
+
+
+ .c.o:
+diff -urN vsftpd-2.0.5.org/parseconf.c vsftpd-2.0.5/parseconf.c
+--- vsftpd-2.0.5.org/parseconf.c 2006-07-02 02:05:10.000000000 +0300
++++ vsftpd-2.0.5/parseconf.c 2008-01-13 20:21:57.000000000 +0200
+@@ -99,6 +99,7 @@
+ { "mdtm_write", &tunable_mdtm_write },
+ { "lock_upload_files", &tunable_lock_upload_files },
+ { "pasv_addr_resolve", &tunable_pasv_addr_resolve },
++ { "convert_charset_enable", &tunable_convert_charset_enable },
+ { 0, 0 }
+ };
+
+@@ -168,6 +169,8 @@
+ { "ssl_ciphers", &tunable_ssl_ciphers },
+ { "rsa_private_key_file", &tunable_rsa_private_key_file },
+ { "dsa_private_key_file", &tunable_dsa_private_key_file },
++ { "local_charset", &tunable_local_charset },
++ { "remote_charset", &tunable_remote_charset },
+ { 0, 0 }
+ };
+
+diff -urN vsftpd-2.0.5.org/postlogin.c vsftpd-2.0.5/postlogin.c
+--- vsftpd-2.0.5.org/postlogin.c 2006-06-12 01:45:25.000000000 +0300
++++ vsftpd-2.0.5/postlogin.c 2008-01-13 20:58:37.000000000 +0200
+@@ -25,6 +25,7 @@
+ #include "access.h"
+ #include "features.h"
+ #include "ssl.h"
++#include "charconv.h"
+ #include "vsftpver.h"
+
+ /* Private local functions */
+@@ -98,6 +99,17 @@
+ /* Handle any login message */
+ vsf_banner_dir_changed(p_sess, FTP_LOGINOK);
+ vsf_cmdio_write(p_sess, FTP_LOGINOK, "Login successful.");
++ if (tunable_convert_charset_enable)
++ {
++ vsf_charconv_init_local_codepage(tunable_local_codepage);
++ tunable_remote_codepage = vsf_charconv_codepage(tunable_remote_charset);
++ p_sess->remote_charset = tunable_remote_codepage;
++ p_sess->enable_conversion = vsf_charconv_avail_convertion(tunable_local_codepage, p_sess->remote_charset);
++ }
++ else
++ {
++ p_sess->enable_conversion = 0;
++ }
+ while(1)
+ {
+ int cmd_ok = 1;
+diff -urN vsftpd-2.0.5.org/session.h vsftpd-2.0.5/session.h
+--- vsftpd-2.0.5.org/session.h 2006-07-02 03:34:48.000000000 +0300
++++ vsftpd-2.0.5/session.h 2008-01-13 20:39:41.000000000 +0200
+@@ -91,6 +91,10 @@
+ int ssl_slave_fd;
+ int ssl_consumer_fd;
+ unsigned int login_fails;
++
++ /* Filename charset conv */
++ int enable_conversion;
++ int remote_charset;
+ };
+
+ #endif /* VSF_SESSION_H */
+diff -urN vsftpd-2.0.5.org/tunables.c vsftpd-2.0.5/tunables.c
+--- vsftpd-2.0.5.org/tunables.c 2006-07-02 02:06:56.000000000 +0300
++++ vsftpd-2.0.5/tunables.c 2008-01-13 20:24:57.000000000 +0200
+@@ -71,6 +71,9 @@
+ int tunable_mdtm_write = 1;
+ int tunable_lock_upload_files = 1;
+ int tunable_pasv_addr_resolve = 0;
++int tunable_convert_charset_enable = 0;
++int tunable_local_codepage = 0;
++int tunable_remote_codepage = 0;
+
+ unsigned int tunable_accept_timeout = 60;
+ unsigned int tunable_connect_timeout = 60;
+@@ -125,4 +128,6 @@
+ const char* tunable_ssl_ciphers = "DES-CBC3-SHA";
+ const char* tunable_rsa_private_key_file = 0;
+ const char* tunable_dsa_private_key_file = 0;
++const char* tunable_local_charset = "NONE";
++const char* tunable_remote_charset = "NONE";
+
+diff -urN vsftpd-2.0.5.org/tunables.h vsftpd-2.0.5/tunables.h
+--- vsftpd-2.0.5.org/tunables.h 2006-07-02 02:07:00.000000000 +0300
++++ vsftpd-2.0.5/tunables.h 2008-01-13 20:28:11.000000000 +0200
+@@ -67,6 +67,9 @@
+ extern int tunable_mdtm_write; /* Allow MDTM to set timestamps */
+ extern int tunable_lock_upload_files; /* Lock uploading files */
+ extern int tunable_pasv_addr_resolve; /* DNS resolve pasv_addr */
++extern int tunable_convert_charset_enable; /* Allow converting charsets for file names */
++extern int tunable_local_codepage; /* Code of local charset */
++extern int tunable_remote_codepage; /* Code of remote charset */
+
+ /* Integer/numeric defines */
+ extern unsigned int tunable_accept_timeout;
+@@ -120,6 +123,8 @@
+ extern const char* tunable_ssl_ciphers;
+ extern const char* tunable_rsa_private_key_file;
+ extern const char* tunable_dsa_private_key_file;
++extern const char* tunable_local_charset;
++extern const char* tunable_remote_charset;
+
+ #endif /* VSF_TUNABLES_H */
+
diff --git a/packages/vsftpd/vsftpd-charconv_2.0.5.bb b/packages/vsftpd/vsftpd-charconv_2.0.5.bb
new file mode 100644
index 0000000000..cc559c6259
--- /dev/null
+++ b/packages/vsftpd/vsftpd-charconv_2.0.5.bb
@@ -0,0 +1,50 @@
+DESCRIPTION = "Secure ftp daemon with filename charconv"
+SECTION = "console/network"
+LICENSE = "GPL"
+PR = "r1"
+
+FILESPATH_append = ":${@os.path.dirname(bb.data.getVar('FILE',d,1))}/vsftpd-2.0.5"
+
+SRC_URI = "ftp://vsftpd.beasts.org/users/cevans/vsftpd-${PV}.tar.gz \
+ file://vsftpd-charconv.patch;patch=1 \
+ file://makefile.patch;patch=1 \
+ file://nopam.patch;patch=1 \
+ file://syscall.patch;patch=1 \
+ file://init \
+ file://vsftpd.conf"
+
+S = "${WORKDIR}/vsftpd-2.0.5"
+
+inherit update-rc.d
+
+do_configure() {
+ # Fix hardcoded /usr, /etc, /var mess.
+ cat tunables.c|sed s:\"/usr:\"${prefix}:g|sed s:\"/var:\"${localstatedir}:g \
+ |sed s:\"${prefix}/share/empty:\"${localstatedir}/share/empty:g |sed s:\"/etc:\"${sysconfdir}:g > tunables.c.new
+ mv tunables.c.new tunables.c
+}
+
+do_compile() {
+ oe_runmake "LIBS=-lcrypt -L${STAGING_LIBDIR}"
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -d ${D}${mandir}/man8
+ install -d ${D}${mandir}/man5
+ oe_runmake 'DESTDIR=${D}' install
+ install -d ${D}${sysconfdir}
+ install -m 0755 ${WORKDIR}/vsftpd.conf ${D}${sysconfdir}/vsftpd.conf
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/vsftpd
+}
+
+pkg_postinst() {
+ addgroup ftp
+ adduser --system --home /var/tmp/ftp --no-create-home --ingroup ftp --disabled-password -s /bin/false ftp
+ mkdir -p ${localstatedir}/share/empty
+}
+
+INITSCRIPT_NAME = "vsftpd"
+
+INITSCRIPT_PARAMS = "defaults"
diff --git a/packages/wifistix/wifistix-modules/sk_buff.patch b/packages/wifistix/wifistix-modules/sk_buff.patch
new file mode 100644
index 0000000000..4ee602f42b
--- /dev/null
+++ b/packages/wifistix/wifistix-modules/sk_buff.patch
@@ -0,0 +1,18 @@
+--- src_cf8385/wlan/wlan_wmm.c 2007-06-22 11:23:39.000000000 -0700
++++ src_cf8385/wlan/wlan_wmm-orig.c 2007-10-28 13:27:46.000000000 -0700
+@@ -701,9 +701,15 @@
+ switch (eth->h_proto)
+ {
+ case __constant_htons(ETH_P_IP):
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
++ PRINTM(INFO, "packet type ETH_P_IP: %04x, tos=%#x prio=%#x\n",
++ eth->h_proto,ip_hdr(skb)->tos,skb->priority);
++ tos = IPTOS_PREC(ip_hdr(skb)->tos) >> IPTOS_OFFSET;
++#else
+ PRINTM(INFO, "packet type ETH_P_IP: %04x, tos=%#x prio=%#x\n",
+ eth->h_proto,skb->nh.iph->tos,skb->priority);
+ tos = IPTOS_PREC(skb->nh.iph->tos) >> IPTOS_OFFSET;
++#endif
+ break;
+ case __constant_htons(ETH_P_ARP):
+ PRINTM(INFO, "ARP packet %04x\n",eth->h_proto);
diff --git a/packages/xcursor-transparent-theme/xcursor-transparent-theme_0.1.1.bb b/packages/xcursor-transparent-theme/xcursor-transparent-theme_0.1.1.bb
index ca048155c9..8d4ede20af 100644
--- a/packages/xcursor-transparent-theme/xcursor-transparent-theme_0.1.1.bb
+++ b/packages/xcursor-transparent-theme/xcursor-transparent-theme_0.1.1.bb
@@ -1,7 +1,7 @@
LICENSE = "GPL"
DESCRIPTION = "Transparent xcursor theme for handheld systems"
SECTION = "x11/base"
-PR="r1"
+PR="r2"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/utils/xcursor-transparent-theme-${PV}.tar.gz \
file://use-relative-symlinks.patch;patch=1 \
@@ -9,3 +9,5 @@ SRC_URI = "http://projects.o-hand.com/matchbox/sources/utils/xcursor-transparent
FILES_${PN} = "${datadir}/icons/xcursor-transparent/cursors/*"
inherit autotools
+
+PACKAGE_ARCH = "all"
diff --git a/packages/xcursor-transparent-theme/xcursor-watchonly-theme/.mtn2git_empty b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/.mtn2git_empty
diff --git a/packages/xcursor-transparent-theme/xcursor-watchonly-theme/20xcursor-transparent b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/20xcursor-transparent
new file mode 100755
index 0000000000..6fa068214e
--- /dev/null
+++ b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/20xcursor-transparent
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Only if there's no mouse at all, we use use transparent cursors
+# for stylus use comfort.
+if ! ls /dev/input/mouse* >/dev/null 2>&1; then
+ echo "Xcursor.theme: xcursor-transparent" | xrdb -merge -nocpp
+fi
diff --git a/packages/xcursor-transparent-theme/xcursor-watchonly-theme/skip_watch_cursor.patch b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/skip_watch_cursor.patch
new file mode 100644
index 0000000000..5c13fa885a
--- /dev/null
+++ b/packages/xcursor-transparent-theme/xcursor-watchonly-theme/skip_watch_cursor.patch
@@ -0,0 +1,23 @@
+diff -NurP xcursor-transparent-theme-0.1.1-orig/cursors/Makefile.am xcursor-transparent-theme-0.1.1/cursors/Makefile.am
+--- xcursor-transparent-theme-0.1.1-orig/cursors/Makefile.am 2003-10-30 13:13:59.000000000 +0100
++++ xcursor-transparent-theme-0.1.1/cursors/Makefile.am 2005-12-20 23:35:17.000000000 +0100
+@@ -79,7 +79,6 @@
+ ul_angle \
+ ur_angle \
+ v_double_arrow \
+- watcha \
+ xterm
+
+ CURSOR_DIR = $(datadir)/icons/xcursor-transparent/cursors
+diff -NurP xcursor-transparent-theme-0.1.1-orig/cursors/Makefile.in xcursor-transparent-theme-0.1.1/cursors/Makefile.in
+--- xcursor-transparent-theme-0.1.1-orig/cursors/Makefile.in 2003-10-31 15:31:13.000000000 +0100
++++ xcursor-transparent-theme-0.1.1/cursors/Makefile.in 2005-12-20 23:35:36.000000000 +0100
+@@ -67,7 +67,7 @@
+ PACKAGE = @PACKAGE@
+ VERSION = @VERSION@
+
+-CURSOR_NAMES = 00008160000006810000408080010102 028006030e0e7ebffc7f7070c0600140 03b6e0fcb3499374a867c041f52298f0 08e8e1c95fe2fc01f976f1e063a24ccd 14fef782d02440884392942c11205230 2870a09082c103050810ffdffffe0204 3ecb610c1bf2410f44200f48c40d3599 4498f0e0c1937ffe01fd06f973665830 9d800788f1b08800ae810202380a0822 c7088f0f3e6c8088236ef8e1e3e70000 d9ce0ab605698f320427677b458ad60b e29285e634086352946a0e7090d73106 fcf1c3c7cd4491d801f1e1c78f100000 X_cursor arrow base_arrow_down base_arrow_up based_arrow_down based_arrow_up bd_double_arrow boat bottom_left_corner bottom_right_corner bottom_side bottom_tee center_ptr circle cross cross_reverse crossed_circle crosshair dot dot_box_mask dotbox double_arrow draft_large draft_small draped_box exchange fd_double_arrow fleur gumby h_double_arrow hand hand1 hand2 left_ptr left_ptr_watch left_side left_tee ll_angle lr_angle move pencil pirate plus question_arrow right_ptr right_side right_tee sailboat sb_down_arrow sb_h_double_arrow sb_left_arrow sb_right_arrow sb_up_arrow sb_v_double_arrow shuttle sizing target tcross top_left_arrow top_left_corner top_right_corner top_side top_tee trek ul_angle ur_angle v_double_arrow watcha xterm
++CURSOR_NAMES = 00008160000006810000408080010102 028006030e0e7ebffc7f7070c0600140 03b6e0fcb3499374a867c041f52298f0 08e8e1c95fe2fc01f976f1e063a24ccd 14fef782d02440884392942c11205230 2870a09082c103050810ffdffffe0204 3ecb610c1bf2410f44200f48c40d3599 4498f0e0c1937ffe01fd06f973665830 9d800788f1b08800ae810202380a0822 c7088f0f3e6c8088236ef8e1e3e70000 d9ce0ab605698f320427677b458ad60b e29285e634086352946a0e7090d73106 fcf1c3c7cd4491d801f1e1c78f100000 X_cursor arrow base_arrow_down base_arrow_up based_arrow_down based_arrow_up bd_double_arrow boat bottom_left_corner bottom_right_corner bottom_side bottom_tee center_ptr circle cross cross_reverse crossed_circle crosshair dot dot_box_mask dotbox double_arrow draft_large draft_small draped_box exchange fd_double_arrow fleur gumby h_double_arrow hand hand1 hand2 left_ptr left_ptr_watch left_side left_tee ll_angle lr_angle move pencil pirate plus question_arrow right_ptr right_side right_tee sailboat sb_down_arrow sb_h_double_arrow sb_left_arrow sb_right_arrow sb_up_arrow sb_v_double_arrow shuttle sizing target tcross top_left_arrow top_left_corner top_right_corner top_side top_tee trek ul_angle ur_angle v_double_arrow xterm
+
+
+ CURSOR_DIR = $(datadir)/icons/xcursor-transparent/cursors
diff --git a/packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb b/packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb
index e9e6479daf..094b303409 100644
--- a/packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb
+++ b/packages/xcursor-transparent-theme/xcursor-watchonly-theme_0.1.1.bb
@@ -3,13 +3,21 @@ DESCRIPTION = "Transparent xcursor theme for handheld systems with visible watch
SECTION = "x11/base"
RREPLACES = "xcursor-transparent-theme"
RPROVIDES = "xcursor-transparent-theme"
-PR="r2"
+PR="r4"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/utils/xcursor-transparent-theme-${PV}.tar.gz \
file://use-relative-symlinks.patch;patch=1 \
- file://skip_watch_cursor.patch;patch=1"
+ file://skip_watch_cursor.patch;patch=1 \
+ file://20xcursor-transparent"
S = "${WORKDIR}/xcursor-transparent-theme-${PV}"
-FILES_${PN} = "${datadir}/icons/xcursor-transparent/cursors/*"
+FILES_${PN} += "${datadir}/icons/xcursor-transparent/cursors/*"
inherit autotools
+
+do_install_append () {
+ install -d ${D}${sysconfdir}/X11/Xsession.d
+ install -m 0755 ${WORKDIR}/20xcursor-transparent ${D}${sysconfdir}/X11/Xsession.d
+}
+
+PACKAGE_ARCH = "all"
diff --git a/packages/xerces-c/xerces-c_2.6.0.bb b/packages/xerces-c/xerces-c_2.6.0.bb
deleted file mode 100644
index fe0677f54f..0000000000
--- a/packages/xerces-c/xerces-c_2.6.0.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-DESCRIPTION = "Xerces-c xml"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "MIT"
-
-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"
-
-inherit pkgconfig
-
-
-#
-# Warning: BITSTOBUILD will default to 32 bits
-#
-export TRANSCODER="NATIVE"
-export MESSAGELOADER="INMEM"
-export NETACCESSOR="Socket"
-export THREADS="pthread"
-export BITSTOBUILD="32"
-export LIBS = " -lpthread "
-CFLAGS_append = " -DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_DEPRECATED_DOM -DPROJ_VALIDATORS -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
-CXXFLAGS_append = " -DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_DEPRECATED_DOM -DPROJ_VALIDATORS -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
-
-do_configure() {
- export XERCESCROOT=${S}
- cd src/xercesc
- ./configure
-}
-
-do_compile () {
- export XERCESCROOT=${S}
- cd src/xercesc
- oe_runmake
-}
-
-do_stage () {
- oe_libinstall -C lib libxerces-c ${STAGING_LIBDIR}
- oe_libinstall -C lib libxerces-depdom ${STAGING_LIBDIR}
-
- cp -pPR include/xercesc ${STAGING_INCDIR}
-}
-
-do_install () {
- oe_libinstall -C lib libxerces-c ${D}${libdir}
- oe_libinstall -C lib libxerces-depdom ${D}${libdir}
-}
diff --git a/packages/xerces-c/xerces-c_2.7.0.bb b/packages/xerces-c/xerces-c_2.7.0.bb
deleted file mode 100644
index 8fdab80180..0000000000
--- a/packages/xerces-c/xerces-c_2.7.0.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-DESCRIPTION = "Xerces-c xml"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "MIT"
-
-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"
-
-inherit pkgconfig
-
-
-#
-# Warning: BITSTOBUILD will default to 32 bits
-#
-export TRANSCODER="NATIVE"
-export MESSAGELOADER="INMEM"
-export NETACCESSOR="Socket"
-export THREADS="pthread"
-export BITSTOBUILD="32"
-export LIBS = " -lpthread "
-CFLAGS_append = " -DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_DEPRECATED_DOM -DPROJ_VALIDATORS -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
-CXXFLAGS_append = " -DPROJ_XMLPARSER -DPROJ_XMLUTIL -DPROJ_PARSERS -DPROJ_SAX4C -DPROJ_SAX2 -DPROJ_DOM -DPROJ_DEPRECATED_DOM -DPROJ_VALIDATORS -DXML_USE_NATIVE_TRANSCODER -DXML_USE_INMEM_MESSAGELOADER -DXML_USE_PTHREADS -DXML_USE_NETACCESSOR_SOCKET "
-
-do_configure() {
- export XERCESCROOT=${S}
- cd src/xercesc
- ./configure
-}
-
-do_compile () {
- export XERCESCROOT=${S}
- cd src/xercesc
- oe_runmake
-}
-
-do_stage () {
- oe_libinstall -C lib libxerces-c ${STAGING_LIBDIR}
- oe_libinstall -C lib libxerces-depdom ${STAGING_LIBDIR}
-
- cp -pPR include/xercesc ${STAGING_INCDIR}
-}
-
-do_install () {
- oe_libinstall -C lib libxerces-c ${D}${libdir}
- oe_libinstall -C lib libxerces-depdom ${D}${libdir}
-}
diff --git a/packages/xerces-c/xerces-c_2.8.0.bb b/packages/xerces-c/xerces-c_2.8.0.bb
new file mode 100644
index 0000000000..4f72e9dc77
--- /dev/null
+++ b/packages/xerces-c/xerces-c_2.8.0.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "Xerces-c is a validating xml parser written in C++"
+HOMEPAGE = "http://xerces.apache.org/xerces-c/"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "MIT"
+PR = "r1"
+
+SRC_URI = "http://mirror.serversupportforum.de/apache/xerces/c/sources/xerces-c-src_2_8_0.tar.gz"
+S = "${WORKDIR}/xerces-c-src_2_8_0/src/xercesc"
+
+inherit autotools pkgconfig
+
+CCACHE = ""
+export XERCESCROOT="${WORKDIR}/xerces-c-src_2_8_0"
+export cross_compiling = "yes"
+
+do_configure() {
+ ./runConfigure -plinux -c"${CC}" -x"${CXX}" -minmem -nsocket -tnative -rpthread -P${D}${prefix} \
+ -C--build=${BUILD_SYS} \
+ -C--host=${HOST_SYS} \
+ -C--target=${TARGET_SYS} \
+}
+
+do_compile() {
+ ${MAKE}
+}
+
+do_stage () {
+ oe_libinstall -C ${XERCESCROOT}/lib libxerces-c ${STAGING_LIBDIR}
+ oe_libinstall -C ${XERCESCROOT}/lib libxerces-depdom ${STAGING_LIBDIR}
+ cp -pPR ${XERCESCROOT}/include/xercesc ${STAGING_INCDIR}
+}
+
+do_install () {
+ ${MAKE} install
+}
diff --git a/site/arm-linux b/site/arm-linux
index 868d982ec4..033366a93c 100644
--- a/site/arm-linux
+++ b/site/arm-linux
@@ -176,3 +176,6 @@ ac_cv_func_pthread_attr_getstack=${ac_cv_func_pthread_attr_getstack=yes}
ac_cv_member_struct_sockaddr_sa_len=${ac_cv_member_struct_sockaddr_sa_len=no}
ac_cv_gnet_have_abstract_sockets=${ac_cv_gnet_have_abstract_sockets=no}
gnet_sockaddr_family_field_name=${gnet_sockaddr_family_field_name=ss_family}
+
+# rp-pppoe
+rpppoe_cv_pack_bitfields=${rpppoe_cv_pack_bitfields=rev}